J'ai une classe de base abstraite
class AbstractClass
{
Col<AbstractClass> parent
public AbstractClass()
{
//do stuff
}
}
J'ai deux implémentations
class A : AbstractClass
{
Col<A> parent
public A(Col<A> parent)
:base(parent)
{
this.parent = parent;
}
}
class B : AbstractClass
{
Col<B> parent
public B(Col<B> parent)
:base(parent)
{
this.parent = parent;
}
}
J'ai une collection
class Col<T> : IList<T> where T : AbstractClass
qui doit être utilisé dans une autre classe en tant que Col<A> and Col<B>
appelons cette classe C
.
class C
{
List<A> a = new List<A>()
List<B> b = new List<B>()
}
Tout cela fonctionnerait, sauf que je veux que les types A
y B
de connaître la collection de leurs parents. J'ai pensé que le fait d'avoir les constructeurs suivants dans AbstractClass
A, B serait acceptable, mais il semble que les contraintes génériques ne soient disponibles que pour les classes et non pour les méthodes. En gros, je voudrais les constructeurs suivants :
public AbstractClass(Col<T> where T : AbstractClass)
public A(Col<A>)
public B(Col<B>)
Les instances de A et B doivent savoir dans quelle collection elles se trouvent, mais je ne peux pas appeler le constructeur de base à partir des classes dérivées parce qu'elles sont de types différents.
Aidez-nous !