我目前尝试构建一个泛型接口,每个派生它的(泛型)类都有一个接受委托的方法,该委托接受类型参数并返回另一个相同类型的类,只有另一个类型参数。
我尝试了以下方法:
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 子句中的形参。我在问什么是模仿这种行为的最佳方法。