We can specify a \"derived from\" constraint on generic type parameters like this:
class Bar where T : IFooGenerator
Is t
You could use something like the following:
public interface IFooGenerator
{
Foo GenerateFoo();
}
interface ISerialFooGenerator : IFooGenerator { }
interface IParallelFooGenerator : IFooGenerator { }
public class FooGenerator : ISerialFooGenerator
{
public Foo GenerateFoo()
{
//TODO
return null;
}
}
public class ParallelFooGenerator : IParallelFooGenerator
where T : ISerialFooGenerator, new()
{
public Foo GenerateFoo()
{
//TODO
return null;
}
}