Surcharges Rapport à des Remplacements dans l'VB.net
Quelles sont les différences de comportement pour la Previous
Propriété de Other1
et Other2
Classe.
Noter que le type de retour de la surcharge Previous
Propriété de Other2
a été modifié pour Other2
alors qu'il reste comme Base
pour Other1
.
Public Class Base
Private _Previous as Base
Protected Overridable ReadOnly Property Previous As Base
Get
Return _Previous
End Get
End Property
Public Sub New(Previous as Base)
_Previous = Previous
End Sub
End Class
Public Class Other1
Inherits Base
Private _Parent as SomeType
Protected Overrides ReadOnly Property Previous As Base
Get
Return _Parent.Previous.Something
End Get
End Property
Public Sub New(Parent as SomeType)
MyBase.New(Nothing)
_Parent = Parent
End Sub
End Class
Public Class Other2
Inherits Base
Private _Parent as SomeType
Protected Overloads ReadOnly Property Previous As Other2
Get
Return _Parent.Previous.Something
End Get
End Property
Public Sub New(Parent as SomeType)
MyBase.New(Nothing)
_Parent = Parent
End Sub
End Class
OriginalL'auteur DavRob60 | 2011-10-24
Vous devez vous connecter pour publier un commentaire.
Après l'un de mes commentaires à Jim Wooley réponse, "il les Ombres de la surcharge de la propriété." J'ai vu la lumière dans cet article.
Donc, les Surcharges de l'Autre2 classe loi peu plus comme l'ombrage que de surcharger. Il est l'un des commentaires dans l'article qui est particulièrement instructif :
Shadows
mot-clé peut très facilement se transformer en une grave violation de la LSP.OriginalL'auteur DavRob60
Vous utilisez généralement les Surcharges lorsque vous fournissez des différents paramètres d'entrée. Remplace remplace la fonctionnalité. Dans votre cas, vous voulez des Remplacements dans l'Autre2 pas les Surcharges. Tandis que les propriétés peuvent prendre des paramètres autres que la valeur, il est préférable de ne pas les fournir et d'utiliser des méthodes plutôt que des propriétés lors du passage d'autres valeurs:
Les remplacements peuvent également être utilisés pour ajouter des fonctionnalités en plus de la méthode surchargée. Très souvent, vous allez voir une méthode de remplacement d'une méthode de base, mais encore l'appeler parce qu'il a juste besoin d'ajouter un peu de choses pour hériter de la classe.
Vous ne pouvez pas la surcharge sur le type de retour, seuls les paramètres d'entrée. Si vos paramètres d'entrée sont différents et votre type de retour est différent, celui qui sera appelé sera basé sur la meilleure correspondance entre les paramètres d'appel à l'aide d'un rétrécissement de la convention afin de déterminer la meilleure correspondance.
Vous la surcharge sur le type de retour, si vous le faites, la façon dont je l'ai fait dans
Other2
. Je sais déjà pourquoi/comment et quand quelqu'un veulent généralement de surcharge ou de remplacer une propriété/sub/function. La chose que je veux une explication sur la façon dont il fonctionne dans ce cas particulier.Essayez d'ajouter l'Option Strict on et voir si votre code continue à fonctionner. Il se peut que cela fonctionne pour votre cas parce que vous êtes la liaison tardive des résultats.
OriginalL'auteur Jim Wooley