实现特定接口的"Type"的C#列表

Yoa*_* R. 1 c# interface compile-time

我想创建一个List<System.Type> listOfTypesOfGlasses,在这里Type必须实现一个特定的接口IGlass,这样我就可以用的眼镜类型加载它.有没有办法在编译时强制执行这个约束(必须实现IGlass)?

Dan*_*ite 6

实现隐藏列表的方法/类.

class YourClass {
    // intentionally incomplete
    private List<Type> listOfTypesOfGlasses;
    public void AddToList<T>() : where T: IGlass
    {
        listOfTypesOfGlasses.Add(typeof(T));
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑:下面是原始答案,假设这Type意味着占位符,而不是System.Type.

你需要做的就是List<IGlass>.

要么

你应该编写自己的包装类,List<T>它有约束.

要么

子类List<T>并将通用约束放在它上 - 但是不鼓励这种做法.