如何创建一个包含接口类型的列表,只添加 class 类型的接口?
How to create a List which contains a type of interface, to only add class types which inerhit this interface?
我想创建一个 class 类型的集合,我只想要类型,而不是对象 - 它们都在
IBuilderType
那么列表怎么写 ->
public List<typeof(IBuilderType)> Builder;
实现这个:
var listBuilder = new List<typeof(IBuilderType)>
{typeof (BasicCategoryBuilder)};
我基本上想限制可以添加到此列表的类型(范围 classes)
Type
不是通用的,因此您无法在编译时检查 List`1
的元素是 IBuilderType
的类型。您可能想通过代码检查类型层次结构并使用一些方法封装列表,但是没有办法在泛型中进行约束Type
。
var listBuilder = new List<Type/* : IBuilderType*/>() {
typeof(BasicCategoryBuilder)
};
您必须使用通用类型 "System.Type" 创建一个列表,如下所示:
List<System.Type> myList = new List<System.Type>();
然后你可以像这样添加类型:
myList.Add(typeof(Bar));
myList.Add(typeof(Foo));
我想创建一个 class 类型的集合,我只想要类型,而不是对象 - 它们都在
IBuilderType
那么列表怎么写 ->
public List<typeof(IBuilderType)> Builder;
实现这个:
var listBuilder = new List<typeof(IBuilderType)>
{typeof (BasicCategoryBuilder)};
我基本上想限制可以添加到此列表的类型(范围 classes)
Type
不是通用的,因此您无法在编译时检查 List`1
的元素是 IBuilderType
的类型。您可能想通过代码检查类型层次结构并使用一些方法封装列表,但是没有办法在泛型中进行约束Type
。
var listBuilder = new List<Type/* : IBuilderType*/>() {
typeof(BasicCategoryBuilder)
};
您必须使用通用类型 "System.Type" 创建一个列表,如下所示:
List<System.Type> myList = new List<System.Type>();
然后你可以像这样添加类型:
myList.Add(typeof(Bar));
myList.Add(typeof(Foo));