我需要創建一個通用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. 通用代理和IList <T>
- 2. IList <T> to IQueryable <T>
- 3. 如何實例化嵌套IList <T>的IList <T>?
- 4. 爲什麼要通過List <T>返回IList <T>?
- 5. 通用類約束其中<T>是約束通用類的類型
- 6. 如何在Ilist <T>中通過T動態?
- 7. 在IList中查找<T><T>使用反射
- 8. 在IList中使用Type.GetType(string)<T>
- 9. 列表<T>派生自IList <T>和IEnumerable <T>,沒用?
- 10. 如何投射對象到IList <T>未知類型T
- 11. 是否將IList <T>轉換爲T []類型的數組導致枚舉?
- 12. 這是什麼意思:類名<T>其中T:
- 13. 失敗演員:IList <T>到自定義類執行ICollection <T>
- 14. EF 4.0存儲庫模式IList <T>或IEnumerable <T>
- 15. 爲只讀屬性公開IList <T>或ReadOnlyCollection <T>?
- 16. 的IList <T>和列表<T>轉換與接口
- 17. 返回IEnumerable的問題<T>/IList <T>
- 18. IQueryable的<t>或者IList的<t>
- 19. 將IList <T>轉換爲BindingList <T>
- 20. 的IList <T>到的ObservableCollection <T>
- 21. 類<T>爲Java中的通用?
- 22. IList <T>搜索幫助
- 23. Crystal Reports,IList <T> as DataSource
- 24. 初始化IList <T> C#
- 25. IList <T>多圖/縮小結果?
- 26. 過濾器的IList <T>
- 27. 如何序列化IList <T>?
- 28. ASP.NET MVC 2.0 - IList的<T>的CheckBox
- 29. 你可以回報IList <T>?
- 30. 帶班implenting的IList <T>
這裏有問題嗎? – leppie 2009-12-22 09:20:29
我想他想要一個接受帶有接口類型約束的多個接口的泛型類。 – 2009-12-22 09:21:44