私は次のものを持っています:
public class Foo<T> : Goo
where T: SomeClass<?>, new()
そんなこと知ってる ?は C# では本当のワイルドカードではありませんが、SomeClass が任意のクラスを引数として取ることができるように、これを C# で正しく記述するにはどうすればよいでしょうか? オブジェクトを使用しようとしましたが、「...からの暗黙的な参照変換はありません...」というエラーが表示されます。
ありがとう!
2 番目の型引数を指定する必要があります (つまりY
、私のサンプルではY
) T
。
public class Foo<T, Y> : Goo
where T: SomeClass<Y>, new()
別のオプションは、ジェネリック クラスでのみ使用する必要がある場合は、2 番目のクラスのみを指定することです。コンパイラはデフォルトのコンストラクターがSomeClass<Y>
あることを事前に知っているため、new() 制限は必要ありません。SomeClass<T>
public class Foo<Y> : Goo{
public SomeClass<Y> Value;
public void Setup() { Value = new SomeClass<Y>(); }
}