Avatar billede tknudsen Nybegynder
19. september 2002 - 20:31 Der er 9 kommentarer og
1 løsning

Interface i asp.net

Hvordan bruger jeg interfaces i asp.net ?

Jeg har (iforb.m. noget undervisning) lavet følgegende:

IDice.vb - interface, som ser således ud:

Imports System
Namespace DICE
    Public Interface IDice
        Function ThrowDice() As Integer
    End Interface
End Namespace


og CDice.vb som ser sådan her ud:

Imports System

Namespace DICE
    Public Class CDice
        Implements IDice
        Public Sub New()

        End Sub
       
        Public Function ThrowDice() As Integer Implements IDice.ThrowDice
            Return 1
        End Function
    End Class
End Namespace

Kompileringen går fint, når jeg husker at kompilere interfacet umiddelbart før klassen (?!?!).

Jeg vil så gerne kunne bruge mit DICE namespace i en aspx fil:

<%@ Page Language="VB" %>

<script runat="server">

    Sub Page_Load(obj As Object,e As Eventargs)
        Dim objDice As DICE.IDice
        objDice = New CDice()
       
        lblTest.text = CStr(objDice.ThrowDice())
    End Sub

</script>

men jeg får følgende fejl:
Compiler Error Message: BC30002: Type 'DICE.IDice' is not defined.

???
Avatar billede tknudsen Nybegynder
19. september 2002 - 20:32 #1
Jeg har lavet en test klasse (magen til CDice klassen) og det fungerede fint. Forskellen var at den ikke implementerede et interface!?!?!?
Avatar billede chrpurk Nybegynder
19. september 2002 - 20:41 #2
NEWBIE mand... kan du ikke engang finde ud af det ? *LOL*
Avatar billede odegaard Nybegynder
19. september 2002 - 20:57 #3
Du skal inkludere dit namespace i din aspx-fil.
Dvs i toppen:
<%@ Import Namespace="DICE" %>

husk at smide dice.dll i \wwwroot\bin\

chrpurk>> mand... kan du ikke engang hjælpe med så simpelt et spørgsmål?
Avatar billede tknudsen Nybegynder
19. september 2002 - 21:13 #4
"I min bog står der..."

Jeg troede at .aspx-filen automatisk inkluderede namespaces (dll'er), som lå i /bin kataloget !?
Avatar billede z42cool Nybegynder
19. september 2002 - 21:18 #5
chrpurk>> Hvor meget newbie er man så hvis man har tjent 15 point på 290 dage?
Avatar billede odegaard Nybegynder
19. september 2002 - 21:21 #6
tknudsen >> Nope! Du skal selv inkludere dem! Dette er da også formålsløst at inkludere namespaces man ikke benytter. Dette ville jo også betyde at alle .NET-namespaces ville blive inkluderet. Det kan vist ikke være godt for en hurtig compiling.
Men man kan dog godt lave per-application inkludering af namespaces. Jeg ved ikke lige hvordan, men jeg har ihvertfald læst det et eller andet sted :-) Jeg mener det er i web.config dette gøres.
Avatar billede tknudsen Nybegynder
21. september 2002 - 10:43 #7
odegaard >> det har du sføli ret i...
Avatar billede tknudsen Nybegynder
21. september 2002 - 10:49 #8
Jeg er en smule forvirret...

Jeg har lavet CDice klasse uden at implmentere interfacet. aspx-filen virker BÅDE med OG uden import af DICE-namespace !?

Når jeg lader CDice implementere IDice OG importerer DICE-namespace får jeg stadig samme fejl ("Type 'DICE.IDice' is not defined.")

Jeg gør således i aspx-filen:

        Dim objDice As DICE.IDice
        objDice = New DICE.CDice()
        lblTest.Text = CStr(objDice.ThrowDice())
Avatar billede tknudsen Nybegynder
24. september 2002 - 08:12 #9
Jeg har gjort noget research (!) og har fundet frem til følgende:

Namespaces, som ligger i projektets assembly cache (projekt/bin) er tilgængelige for alle filer i projektet UDEN at importere dem !!

Løsningen på mit problem hænger sammen med at jeg kompilerede source-filerne (CDice.vb og IDice.vb) hver for sig, men til det samme assembly. Derved bliver indholdet overskrevet 2. gang jeg kompilerer. Istedet skal jeg gøre således:

vbc /t:library /out:bin/dice.dll /r.... idice.vb cdice.vb

Herefter kan jeg bruge typerne på følgende måde:

<%@ Page Language="VB" %>

<script runat="server">

    Sub Page_Load(obj As Object,e As Eventargs)
        Dim objDice As DICE.IDice
        objDice = New CDice()
       
        lblTest.text = CStr(objDice.ThrowDice())
    End Sub

</script>
Avatar billede tknudsen Nybegynder
24. september 2002 - 08:13 #10
hmmm...

"Herefter kan jeg bruge typerne på følgende måde:"

<%@ Page Language="VB" %>

<script runat="server">

    Sub Page_Load(obj As Object,e As Eventargs)
        Dim objDice As DICE.IDice
        objDice = New DICE.CDice()
       
        lblTest.text = CStr(objDice.ThrowDice())
    End Sub

</script>
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester