我需要創建一個通用IList,其中T將是一個具有各種接口的泛型類。 例如ChannelFactory<IService1>
或ChannelFactory<IService2>
等。IList <T>其中T是通用類
0
A
回答
7
如果你想這樣做,你應該改變你的設計,如果有必要。使所有接口都來自相同的接口,例如IServiceBase
。然後,可以使用以下約束你的泛型類:
IList<T> where T: IServiceBase
+0
界面層次結構是確定的方式。 – Codesleuth 2009-12-22 09:22:48
1
這是怎麼回事?
public class MyList<T>: IList<T> where T: class
{
}
1
你可以這樣做:
IList<ChannelFactory<IService1>> list = new List<ChannelFactory<IService1>>;
但你不能混用,並在本場比賽的ChannelFactory < IService1>和的ChannelFactory < IService2>對象名單。
如果你真的需要混合和匹配列表中使用非通用的一個:
IList non_generic_list = new List();
non_generic_list.Add(new ChannelFactory<IService1>());
non_generic_list.Add(new ChannelFactory<IService2>());
0
你可以只是這樣做:
var list = new List<ChannelFactory<IService1>>();
事實上,你可以嵌套泛型儘可能多的,但你可能會在一段時間後對所有尖括號感到厭倦。
1
如果您需要在運行時從動態類型創建列表,則可以像這樣創建通用列表類型。
public IList CreateList(Type interfaceType)
{
return (IList)Activator.CreateInstance(typeof(List<>).MakeGenericType(interfaceType));
}
然後,你可以這樣做:
IList<ChannelFactory<IService1>> list = CreateList(typeof(ChannelFactory<IService1>)) as IList<ChannelFactory<IService1>>;
如果你有知識,通用類的,你需要的時間和地點,去的接口層次結構。如果您沒有完全控制它,但需要在運行時動態創建列表,這可能是一個解決方案。
相關問題
- 1. 是否收集<T>包裝IList <T>或枚舉IList <T>?
- 2. 標準庫中是否有類型T? IList <T>其中T:class,new()
- 3. IList <IList<T>>到IReadonlyCollection <IReadonlyCollection <T>>
- 4. 通用代理和IList <T>
- 5. T []是否實施IList <T>?
- 6. 轉換「任務<IList<T>>」到「的IList <T>」
- 7. 自IList <T>轉換到非通用的IList
- 8. IList <T> to IQueryable <T>
- 9. 如何實例化嵌套IList <T>的IList <T>?
- 10. 爲什麼要通過List <T>返回IList <T>?
- 11. 通用類約束其中<T>是約束通用類的類型
- 12. Telerik OpenAccess。使用其他類型的集合而不是IList <T>
- 13. 在IList中使用Type.GetType(string)<T>
- 14. 在IList中查找<T><T>使用反射
- 15. 如何在Ilist <T>中通過T動態?
- 16. 的IList <T>,IEnumerable的<T>和的ObservableCollection <T>
- 17. 使用列表<T>與IList的<T>
- 18. 列表<T>派生自IList <T>和IEnumerable <T>,沒用?
- 19. 接口<T>其中T:類
- 20. 如何投射對象到IList <T>未知類型T
- 21. 是否將IList <T>轉換爲T []類型的數組導致枚舉?
- 22. 創建通用IList方法<T>方法
- 23. 的IList <T>回報作爲一種通用的
- 24. 失敗演員:IList <T>到自定義類執行ICollection <T>
- 25. 這是什麼意思:類名<T>其中T:
- 26. 使用iList構造函數初始化類<T>?
- 27. IList中未知類型的訪問屬性<T>
- 28. 德爾福接口和IList <T>(或TObjectList <T>)
- 29. EF 4.0存儲庫模式IList <T>或IEnumerable <T>
- 30. IList <T>。查找索引(Int32,謂詞<T>)
這裏有問題嗎? – leppie 2009-12-22 09:20:29
我想他想要一個接受帶有接口類型約束的多個接口的泛型類。 – 2009-12-22 09:21:44