10. juni 2002 - 15:43Der er
10 kommentarer og 1 løsning
er jeg helt galt på den (lidt generel oop)
Hej
Jeg har brug for lidt opfriskning af min OOP hukommelse nu hvor jeg koder i .net :
Jeg har en klasse : "trlist" der indeholder denne property :
Public Property Item(ByVal index As Integer) As trItem Get msgbox(List(index).tostring) Return List(index) End Get Set(ByVal Value As trItem) List(index) = Value End Set End Property
Den returnerer objekter af typen : "tritem"
Jeg har en sub klasse til trlist: "trkundelist" som indeholder objekter af subklassen til "tritem" der hedder "trkunde"
Problemet er at jeg når jeg bruger trkundelist.item, få jeg ikke objekter af typen trkunde som jeg havde forventet, men istedet af tritem.
Burde jeg ikke kune gøre dette uden at skulle have en item property på alle mine sub klasser til trlist ??
Denne side indeholder artikler med forskellige perspektiver på Identity & Access Management i private og offentlige organisationer. Artiklerne behandler aktuelle IAM-emner og leveres af producenter, rådgivere og implementeringspartnere.
Når jeg i min Item property returnerer noget er er af klassen "trkunde" burde det der kommer ud så ikke være være af denne type ligemeget om returtypen på item er "tritem"? "trkunde" er jo blot en specialicering af "tritem"
Returtypen på Item er tritem. Hverken mere eller mindre. Det er der er kontrakt på compilereingstidspunktet på. At du så kan up-caste det returnerede til trkunde, er kun noget du ved.
Hvis du bruger "object" som returtype, så burde du stadig skulle up-caste til trkunde/tritem for at kalde metoder der er defineret i disses interfaces. Hvis det forholder sig som du siger, så vil jeg påstå at det er en Microsoft/VB.NET-feature. Det er ikke OOP.
Jeg lavede en lille test-ting i C#. Og her opførte det sig som forventet. Hvis der returneres et "object", så skal det castes før nogle metoder kan kaldes. Jeg tror VB.NET er lidt for hjælpsom..
Synes godt om
Ny brugerNybegynder
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.