J'ai un ensemble de classes (MyClass1, MyClass2, MyClass3
) qui implémentent une interface (IMyClass
).C# Collection utilisant les types génériques ou l'interface
Je suis intéressé par la création d'une méthode pour remplir et retourner une liste (Collection.Generics.Lists<>
) des objets qui ont une interface commune MyClass
X
(List<IMyClass>
). Mais comment?
Chaque classe a un constructeur MyClass
X
qui fait quelque chose de différent. Donc, je ne peux pas créer un BaseClass et utiliser un constructeur commun pour tous.
par l'interface Je ne peux pas faire:
public List<IMyClass> Fill(string[] ItemsPassedByParam, IMyClass InstanceOfMyClassX)
List MyList = new List<IMyClass>();
foreach (item in ItemsPassedByParam)
{
MyList.Add (new IMyClass (item)); //can't do new from an Interface!!
}
}
Aussi j'ai essayé d'utiliser le type de médicaments génériques, TMyClass dans l'exemple suivant, mais ni a fonctionné pour moi (même si je n'ai pas des notions très profondes sur les types génériques):
public List<TMyClass> Fill(string[] ItemsPassedByParam, Type TypeOfMyClassX)
List MyList = new List <TMyClass>();
foreach (item in ItemsPassedByParam)
{
MyList.Add (new TMyClass (item)); //can't do new from a Generic Type!!
}
}
J'ai essayé aussi d'extérioriser le code dans le constructeur de MyClass
X
dans une méthode, mais je ne peux pas appeler la méthode depuis de l'objet n'est pas initialisé (il n'y a pas new()
).
Dans ces cas, quelle est la solution?
Merci d'avance!
Qu'est-ce qu'un 'item'? Est-ce qu'il identifie le type? – cjk
En outre, ce qui est "nouvelle liste();" censé être? Il n'y a rien à propos de cela qui pourrait compiler. –