如何创建一个包含接口类型的列表,只添加 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));