Betrachten Sie die folgenden Klassen repräsentiert ein Bestellsystem:Ist es möglich, eine Eigenschaft zu überschreiben und einen abgeleiteten Typ in VB.NET zurückzugeben?
Public Class OrderBase
Public MustOverride Property OrderItem as OrderItemBase
End Class
Public Class OrderItemBase
End Class
Nun nehmen wir an, diese Klassen zu einem bestimmten Satz von Auftragsklassen, halten die Summe der Natur von Orderbase erweitern möchten:
Public Class WebOrder
Inherits OrderBase
Public Overrides Property OrderItem as WebOrderItem
End Property
End Class
Public Class WebOrderItem
Inherits OrderItemBase
End Class
Die Overriden-Eigenschaft in der WebOrder-Klasse verursacht einen Fehler, der besagt, dass sich der Rückgabetyp von dem in OrderBase definierten unterscheidet. Der Rückgabetyp ist jedoch eine Unterklasse des in OrderBase definierten Typs. Warum lässt VB das nicht zu?
Definieren Sie Ihre Bestellung Artikel als Array ist eine schlechte Idee sowieso. Verwenden Sie eine Liste oder ein Ienumerable. –
In meinem echten Code sind sie Listen. Entschuldigung für die Verwirrung mit dem(). –
Siehe auch die Antworten auf [diese C# -Frage] (http://stackoverflow.com/questions/157119/c-sharp-can-o-override-with-derived-types) aus Gründen und Tricks/Workarounds. ([C# s Method Signatur "neu" ist "Schatten" in VB.Net]) (http://stackoverflow.com/questions/8575418/difference-between-shadows-vb-net-and-new-c)) –