Tenir compte des classes suivantes représentant un système de commande:Est-il possible de surcharger une propriété et de renvoyer un type dérivé dans VB.NET?
Public Class OrderBase
Public MustOverride Property OrderItem as OrderItemBase
End Class
Public Class OrderItemBase
End Class
Maintenant, supposons que nous voulons étendre ces classes à un ensemble plus précis des classes d'ordre, en gardant la nature globale des OrderBase:
Public Class WebOrder
Inherits OrderBase
Public Overrides Property OrderItem as WebOrderItem
End Property
End Class
Public Class WebOrderItem
Inherits OrderItemBase
End Class
La propriété Overriden dans la classe WebOrder provoquera une erreur indiquant que le type de retour est différent de celui défini dans OrderBase ... cependant, le type de retour est une sous-classe du type défini dans OrderBase. Pourquoi VB ne le permettra-t-il pas?
Définir vos éléments de commande en tant que tableau est une mauvaise idée de toute façon. Utilisez une liste ou un Ienumerable. –
Dans mon code réel ce sont des listes. Désolé pour la confusion avec le(). –
Voir aussi les réponses à [cette question C#] (http://stackoverflow.com/questions/157119/c-sharp-can-i-override-with-derived-types) pour des raisons et astuces/solutions de contournement. ([La signature de méthode de C# "new" est "Shadows" dans VB.Net] (http://stackoverflow.com/questions/8575418/difference-between-shadows-vb-net-and-new-c)) –