nyt problem med interface

Tags:    vb class

Det gik ellers ligeså godt ...

Private polyList As Collections.Generic.IList(Of cShape.iPaint)

genererede ingen fejl før den skal bruges - men jeg får besked på at IList<> ikke kan instantieres med new når jeg prøver det.
Når den skal bruges med polyList.Add(etObjSomBruger_iPaint) er der fejl på, at polyList ikke er instantieret.

Jeg er i tvivl om jeg har sat den rigtigt op.
cShape.iPaint
er det interface jeg har etableret. Jeg har fire forskellige klasser som implementerer interfacet, og har adskillige steder skrevet
polyList.Add(etObjSomBruger_iPaint)
uden der markeres en syntax-fejl.



6 svar postet i denne tråd vises herunder
2 indlæg har modtaget i alt 21 karma
Sorter efter stemmer Sorter efter dato
Joh men hvorfor ikke lade polyList være en List i stedet for IList

Private polyList As New Collections.Generic.List(Of cShape.iPaint)



Indlæg senest redigeret d. 19.03.2012 12:03 af Bruger #16797
Kan du ikke bare bruge System.Collections.Generic.List(Of T)?
Det giver nu meget god mening at du ikke kan instantiere IList da det er et interface som man kan implementere.



Kan du ikke bare bruge System.Collections.Generic.List(Of T)?

Jo. Men det betyder en liste for hver af de fire klasser som bruger interfacet. Jeg troede at jeg gennem iList<> kunne få en fælles container til alle klasserne.





Indlæg senest redigeret d. 19.03.2012 11:40 af Bruger #17086
Måske forstår jeg ikke helt problemet. Du kan da sagtens have en liste af IPaint, og så proppe dine forskelle objekter deri, uanset at de er forskellige, så længe de alle implementerer IPaint



Måske forstår jeg ikke helt problemet. Du kan da sagtens have en liste af IPaint, og så proppe dine forskelle objekter deri, uanset at de er forskellige, så længe de alle implementerer IPaint


Det var osse det der var meningen.
Men hvad mener du med 'en liste af IPaint' ?

I en form-klasse instantiere jeg med

Private polyList As Collections.Generic.IList(Of cShape.iPaint)

Andre variabler ligeledes, say

Private myIntList as Collections.Generic.List(of Int)

i New() kan jeg skrive
myIntList = new Collections.Generic.List(of Int)

men den går ikke for polyList

Når program-koden møder et udtryk som

polyList.Add(etObjSomBruger_iPaint)
får jeg en fejl:
"Der opstod en fejl under oprettelsen af formularen. Se Exception.InnerException for at få flere oplysninger. Fejlen er: Objektreferencen er ikke indstillet til en forekomst af et objekt."

... det er den standard-fejl der kommer hver gang man har glemt at instantiere som new() ..



Indlæg senest redigeret d. 19.03.2012 12:02 af Bruger #17086
Joh men hvorfor ikke lade polyList være en List i stedet for IList

Private polyList As New Collections.Generic.List(Of cShape.iPaint)




;o) .. den gled ned. Programmet protesterer ihvertfald ikke.
Tak ska' du ha'



t