私は汎用タイプG<T> where T : A
を持っています。A
は抽象クラスです。それぞれのクラスでB
A
から派生しました。繰り返しコードを書くことなくタイプG<B>
のフィールドを持っていますが、それが可能かどうかはわかりません。これを行う1つの方法は、派生クラスにジェネリック型プロパティを設定します。
abstract class A
{
protected object g;
protected abstract void SetG();
public A()
{
SetG();
}
}
class B : A
{
protected override void SetG()
{
this.g = new G<B>();
}
public B() : base() {}
}
だろう。しかし、これは、すべての派生クラスでrepetetiveコードの多くを意味します。これを行うより良い方法はありますか?
はい、それは確かに私より良い解決策です。ありがとう!他の誰かが何かを考えている場合には、しばらくお待ちください。 – Dunno
これはあなたが探している解決策です。あなたは 'A'のようなクラスの間に名前を付けることについて考えてみたいかもしれません。このパターンをどこか別の場所で見たい場合は、CollectionsとGenericの実装も見てください。 –
ハ!良い点、@MattRowland!それがどのように私を逃れたかわからない。 :)代わりに、その名前を使用する答えを更新します。ありがとう! – wablab