次のように、ジェネリック型パラメーターに「派生元」制約を指定できます。
class Bar<T> where T : IFooGenerator
NOTの派生元を指定する方法はありますか?
私のユースケース: 並列化可能な多数のFooGenerator
s があり、それぞれに同じ並列化コードがありますが、それらを常に並列化する必要はありません。
public class FooGenerator : IFooGenerator
{
public Foo GenerateFoo() { ... }
}
したがって、並列で Foo を生成するための汎用コンテナー クラスを作成します。
public class ParallelFooGenerator<T> : IFooGenerator where T : IFooGenerator
{
public Foo GenerateFoo()
{
//Call T.GenerateFoo() a bunch in parallel
}
}
FooGenerator
とParallelFooGenerator<FooGenerator>
交換したいので にしますParallelFooGenerator : IFooGenerator
。ParallelFooGenerator<ParallelFooGenerator>
しかし、私は明らかに合法的になりたくありません。
したがって、補助的な質問として、「派生していない」制約が不可能な場合、これを設計するためのより良い方法はおそらくありますか?