我有一個接口定義爲:如何將列表<interface>轉換爲列表<concrete>?
public interface MyInterface {
object foo { get; set; };
}
和一個類實現該接口:
public class MyClass : MyInterface {
object foo { get; set; }
}
我然後創建返回ICollection的像這樣的函數:
public ICollection<MyClass> Classes() {
List<MyClass> value;
List<MyInterface> list = new List<MyInterface>(
new MyInterface[] {
new MyClass {
ID = 1
},
new MyClass {
ID = 1
},
new MyClass {
ID = 1
}
});
value = new List<MyClass>((IEnumerable<MyClass>) list);
return value;
}
它會編譯但會拋出一個
無法投射類型爲 'System.Collections.Generic.List
1[MyInterface]' to type 'System.Collections.Generic.IEnumerable
1 [MyClass]'的對象。
異常。我究竟做錯了什麼?
這將工作在.Net 2.0+而不僅僅是LINQ,因爲System.Collections.Generic.List <>直接支持ConvertAll()。 –
2011-05-16 15:44:12
謝謝,@Ritch。我認爲'ConvertAll'是一個Linq方法,但我沒有打擾到檢查。 – 2011-05-16 15:47:35
這個伎倆!感謝JSBangs。 – acermate433s 2011-05-16 15:49:35