Я хочу создать класс Operation с функцией, которая принимает Данные в качестве входных данных и предоставляет Данные в качестве выходных данных:
public abstract class Data { }
public abstract class Operation {
public abstract Data Run (Data input);
}
Мне нужна гибкость различных данных выходных данных, чем данных входных данных:
public abstract class Data { }
public abstract class Operation<T1, T2>
where T1: Data
where T2: Data
{
public abstract T2 Run (T1 input);
}
Наконец, я хочу заставить все Данные реализовать Список некоторого типа:
public abstract class Data<T> : List<T> { }
public abstract class Operation<T1, T2>
where T1: Data // Error
where T2: Data // Error
{
public abstract T2 Run (T1 input);
}
Затем я получаю сообщение об ошибке: «Использование универсального типа« Данные »требует аргументов 1 типа» .
Как мне разрешить эту ошибку, не задавая явно тип данных в предложении where?
В идеале нужно, чтобы работал следующий код:
public class Operation <????> { ???? }
public class Data<T> : List<T> {}
public class Foo {}
public class FooData : Data<Foo> {}
public class Bar {}
public class BarData : Data<Bar> {}
public class FBOperation : Operation<FooData, BarData> {
public override BarData Run (FooData input) {
return ...;
}
}
Как мне реализовать класс Operation?