泛型:如何实现:"T源自xxx"

Tal*_*gal 2 c# generics

我想使用泛型类并强制其中一个参数派生自某个基类.就像是:

public class BaseClass { }
public class DerivedClass : BaseClass { }          
public class Manager<T> where T : derivesfrom(BaseClass)
Run Code Online (Sandbox Code Playgroud)

我现在这样做的方式是在运行时在构造函数中:

public class Manager<T> where T : class
{
    public Manager()
    {
        if (!typeof(T).IsSubclassOf(typeof(BaseClass)))
        {
            throw new Exception("Manager: Should not be here: The generic type should derive from BaseClass");
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

有没有办法在编译时这样做?谢谢.

Ken*_*art 12

你几乎拥有它:

public class Manager<T> where T : BaseClass
Run Code Online (Sandbox Code Playgroud)

阅读所有关于泛型约束这里.