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.
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 ClassD'avance, merci à vous.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Partager