我想创建一个类类型的集合,我只想要类型,而不是对象 - 它们都是inerhit
IBuilderType
所以如何写清单 - >
public List<typeof(IBuilderType)> Builder;
实现这一目标:
var listBuilder = new List<typeof(IBuilderType)>
{typeof (BasicCategoryBuilder)};
我基本上想要限制你可以添加到这个列表的类型(类的范围)
答案 0 :(得分:0)
Type
不是通用的,因此您无法在编译时检查List`1
的元素是IBuilderType
的类型。您可能希望按代码检查类型层次结构并使用某些方法封装列表,但是无法在泛型中约束Type
。
var listBuilder = new List<Type/* : IBuilderType*/>() {
typeof(BasicCategoryBuilder)
};
答案 1 :(得分:0)
您必须使用通用类型&#34; System.Type&#34;创建一个List。像这样:
List<System.Type> myList = new List<System.Type>();
然后您可以添加如下类型:
myList.Add(typeof(Bar));
myList.Add(typeof(Foo));