В настоящее время я пытаюсь создать общий интерфейс, в котором каждый (общий) класс, производный от него, будет иметь метод, принимающий делегата, который принимает параметр типа и возвращает другой класс того же типа, только с другим параметром типа.
Я пробовал следующее:
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. Я спрашиваю, как лучше всего имитировать такое поведение.
SomeDerived<T>
синтаксически неверен в том, где ограничение - person Sriram Sakthivel   schedule 14.09.2013