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 Class
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
D'avance, merci à vous.