I want to create an Operation class with a function that takes Data as input and provides Data as output:
public abstract class Data { }
public abstract class Operation {
public abstract Data Run (Data input);
}
I want the flexibility of different Data output than Data input:
public abstract class Data { }
public abstract class Operation<T1, T2>
where T1: Data
where T2: Data
{
public abstract T2 Run (T1 input);
}
Lastly, I want to force all Data to implement a List of some type:
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);
}
Then I get the error: "Using the generic type 'Data' requires 1 type arguments".
How am I supposed to resolve this Error without explicitly setting a type of Data in the where clause?
Ideally want to have the following code work:
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 ...;
}
}
How am I supposed to implement the Operation class?