130 votes

Liste des acteurs<T> lister<Interface>

public interface IDic
{
    int Id { get; set; }
    string Name { get; set; }
}
public class Client : IDic
{

}

Comment puis-je lancer List<Client> vers List<IDic> ?

9voto

Andras Zoltan Points 24996

Un itérateur Cast et .ToList() :

List<IDic> casted = input.Cast<IDic>().ToList() fera l'affaire.

À l'origine, j'ai dit que la covariance fonctionnerait - mais comme Jon l'a souligné à juste titre ; non ça ne le fera pas !

Et à l'origine, j'ai aussi stupidement laissé de côté l'appel ToList()

4voto

musefan Points 23208

Si vous pouvez utiliser LINQ, vous pouvez le faire...

 List<Client> clientList = new List<Client>();
List<IDic> list = clientList.Select(c => (IDic)c).ToList();

3voto

Marc Messing Points 164
List<Client> listOfA = new List<Client>();
List<IDic> list = listOfA.Cast<IDic>().ToList();

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X