class Bar
{
static public Bar Instance { get { return null; /*return instance*/ } }
}
private void Foo<T>() where T : Bar
{
T getInstace = T.Instance;
}
これはエラーですが、インスタンスを取得する必要があります。C#Genericsでこれは不可能ですか?
これには解決策がありますか?
は、私はあなたが知っている、これをやっているしたいと思います
++
class Bar<T>
{
static public T Instance { get { return default(T); /*return instance*/ } }
}
class BarChild : Bar<BarChild>
{
public void Func(){}
}
private T Foo<T>() where T : Bar<T>
{
return T.Instance;
}
private void Example()
{
Foo<BarChild>().Func();
}
に感謝します。 しかし、 "T.Instance"はエラーです。
ポイントは何ですか? 'Foo'にパラメータを渡さないので、' Foo() 'と' Foo(Bar.Instance) 'の違いは最小です。 –
dasblinkenlight
Tタイプを渡すのはなぜですか?または、いくつかの工場の方法がありますか? –
すべての型 'T'に有効な' Instance'の有効な型はありません。 'バー'は一般的である必要があります。あなたが望むものは完全にはっきりしていませんが、他の選択肢があるかもしれません。 – Rob