中間層には、親のものに属する子のもののコレクション用の便利なコレクションがあります。
public class ChildCollection<TParent, TChild>
{
public IEnumerable<TChild> GetChildren();
etc.
}
インターフェイスには、ChildCollection <TParent、TChild>のコンテンツを表示し、ユーザーが作業できるようにする便利なグリッドがあります。
public abstract class ChildCollectionGrid<TCollection, TParent, TChild> : MyGridControl
where TCollection : ChildCollection<TParent, TChild>
{
public abstract TCollection Collection;
etc.
}
このクラスを継承して、ウィジェット上のワッフルと連携するグリッドを作成すると、次のようになります。
public class WidgetWafflesGrid : ChildCollectionGrid<WidgetWafflesCollection, Widget, Waffle>
これは少し冗長です。WidgetWaffleCollectionは、ChildCollection <Widget、Waffle>です。最初のジェネリック型引数を指定すると、他の2つを正確に指定しない限り、クラスはコンパイルされません。
コンパイラがこれらの他の2つのタイプを推測できる、これを達成するためのより良い方法はありますか?私は気難しいことを知っていますが、理想的にはクラス宣言を次のようにしたいと思います。
public class WidgetWafflesGrid : ChildCollectionGrid<WidgetWafflesCollection>
ご協力いただきありがとうございます!