Generics with Generic Parameters and Abstract class
In my experience it is easiest to create non-generic interface to generic classes. It also solves the problem when you need to cast to the base class without knowing the generic type. interface IFirstClass {…} abstract class FirstClass<T> : IFirstClass {…} abstract class SecondClass<T> where T : IFirstClass {…}