在C#中将对象列表转换为其接口类型

Mik*_*ole 2 .net c# generics

我知道我可以将一个对象从它自己的类型转换为它的接口类型,如下所示:

IMyInterface myValue = (IMyInterface)MyObjectThatImplementsMyInterface;
Run Code Online (Sandbox Code Playgroud)

我怎样才能投IList<MyClassThatImplementMyInterface>IList<IMyInterface>

Mar*_*ers 9

昨天回答了同样的问题,虽然对于基类而不是接口.

使这项工作的方法是迭代列表并转换元素.这可以使用ConvertAll完成:

IList<A> listOfA = new List<C>().ConvertAll(x => (A)x);
Run Code Online (Sandbox Code Playgroud)

你也可以使用Linq:

IList<A> listOfA = new List<C>().Cast<A>().ToList();
Run Code Online (Sandbox Code Playgroud)