2

ジェネリッククラスを使用して、そのパラメーターの1つを強制的に基本クラスから派生させたいと思います。何かのようなもの:

public class BaseClass { }
public class DerivedClass : BaseClass { }          
public class Manager<T> where T : derivesfrom(BaseClass)

私が今それをしている方法は、コンストラクターで実行時にあります:

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");
        }
    }
}

コンパイル時にこれを行う方法はありますか?ありがとうございました。

4

1 に答える 1

12

あなたはほとんどそれを持っていました:

public class Manager<T> where T : BaseClass

ここで一般的な制約についてすべて読んでください。

于 2012-05-15T07:51:59.837 に答える