我知道我可以從它自己的類型對象轉換接口類型,像這樣:鑄造對象的列表其接口類型在C#
IMyInterface myValue = (IMyInterface)MyObjectThatImplementsMyInterface;
我怎麼能投IList<MyClassThatImplementMyInterface>
到IList<IMyInterface>
?
我知道我可以從它自己的類型對象轉換接口類型,像這樣:鑄造對象的列表其接口類型在C#
IMyInterface myValue = (IMyInterface)MyObjectThatImplementsMyInterface;
我怎麼能投IList<MyClassThatImplementMyInterface>
到IList<IMyInterface>
?
我回答了同樣的問題yesterday,雖然對於基類而不是接口。
使這項工作的方法是迭代列表並投射元素。
IList<A> listOfA = new List<C>().ConvertAll(x => (A)x);
你也可以使用Linq:這可以使用ConvertAll做
IList<A> listOfA = new List<C>().Cast<A>().ToList();
這不幫你了,但是請注意,C#4.0將引入CO /逆變的接口,因此你」將能夠直接投射某些收藏界面。雖然我不知道,如果IList<>
將是其中之一(該接口必須是 '安全的' 協變/逆變)
一些鏈接:
的IList到IList的?他們看起來和我一樣! – CesarGon 2009-12-01 23:47:46
尖括號沒有被轉義,因此它們看起來像是虛假標籤,Markdown吃了它們。 – 2009-12-01 23:49:04