我需要创建一个通用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