Référencement de BaseElement dans BaseCollection (of T as BaseElement)
Bonjour à tous, la question est posée dans le titre. J'ai 2 classes de base "BaseElement" qui sert à construire des objets dérivés de cette classe et qui peuvent être ajoutés dans une collection BaseCollection(of T as BaseElement) qui elle même est prévu pour être dérivée.
Pourquoi une contrainte de type (of T as BaseElement) vous me demanderez ? : Parce que je veux accéder aux membres de BaseElement dans BaseCollection.
Quelques explications : Le référencement de BaseElement dans BaseCollection se fait dans la méthode Add. Noter que je n'ai besoin d'accéder qu'aux membres de base (pas aux membres hérités) au travers de ce référencement. J’espère que vous me suivez car c'est assez compliqué à expliquer :aie:.
Problème : Je ne parviens pas à créer une référence à BaseCollection(of T as BaseElement) dans BaseElement....(Voir LIGNE A PROBLEME), VS me dit : Impossible de convertir BaseCollection (of T as BaseElement) en BaseCollection (of BaseElement).
Voici le code débarrassé du superflu pour mieux comprendre :
Code:
1 2 3 4 5 6 7 8 9 10 11
| Public MustInherit Class BaseElement
Private _ParentCollection As BaseCollection(Of BaseElement)
Protected Friend Property Collection() As BaseCollection(Of BaseElement)
Get
Return Me._ParentCollection
End Get
Set(value As BaseCollection(Of BaseElement))
Me._ParentCollection = value
End Set
End Property
End Class |
Code:
1 2 3 4 5 6 7 8 9 10
| Public MustInherit Class BaseCollection(Of T As BaseElement)
Inherits ReadOnlyDictionary(Of Integer, T)
Public Sub New()
MyBase.New(New Dictionary(Of Integer, T))
End Sub
Friend Overridable Sub Add(element As T)
element.Collection = Me ' LIGNE A PROBLEME
...
End Sub
End Class |
D'avance, merci à vous.