Scenario:
class A { }
class B : A { }
class C where T: A { }
Question
Why cant C<
What you are asking for is Covariance and Contravariance in Generics which is only applicaple for interfaces and delegates. You can check this
You can do the following in Framework >= 4:
interface IC where T : A
class C : IC where T : A
IC ica = new C();
For your case you should extract an interface for class C