如何创建一个包含一种接口类型的List,只添加哪个类接口?

时间:2015-06-19 10:05:06

标签: c#-4.0

我想创建一个类类型的集合,我只想要类型,而不是对象 - 它们都是inerhit

IBuilderType

所以如何写清单 - >

public List<typeof(IBuilderType)> Builder;

实现这一目标:

var listBuilder = new List<typeof(IBuilderType)> 
        {typeof (BasicCategoryBuilder)};

我基本上想要限制你可以添加到这个列表的类型(类的范围)

2 个答案:

答案 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));