現在、派生するすべての(ジェネリック)クラスが、型パラメーターを受け入れ、同じ型の別のクラスを別の型パラメーターのみで返すデリゲートを受け入れるメソッドを持つジェネリック インターフェイスを構築しようとしています。
私は次のことを試しました:
public interface GenericInterface<out T, out SomeDerived>
where SomeDerived<T> : GenericInterface<T, SomeDerived>
{
SomeDerived<NT> bind<NT>(bindee<T, NT, SomeDerived<NT>> bindFunc);
}
public delegate AnotherDerived<T2> bindee<in T1, out T2, out AnotherDerived>(T1 param)
where AnotherDerived<T2> : GenericInterface<T2, AnotherDerived>;
public class Derived<T> : GenericInterface<T, Derived>
{
Derived<NT> bind<NT>(bindee<T, NT, Derived<NT>> bindFunc);
}
しかし、コンパイルに失敗し、次のエラーが発生します。
クラス、構造体、またはインターフェイス メンバー宣言の無効なトークン '<'
そのような場合の正しい設計は何ですか?
編集:
コンパイラ エラーの構文上の理由を理解しています。ジェネリック型引数を where 句のパラメーターに適用することはできません。そのような行動を模倣する最善の方法は何かを尋ねています。