Possible Duplicate:
Covariance and Contravariance on the same type argument
You can declare a generic type parameter as covariant by using the out keyword:
interface ICovariant<out R>
You can declare a generic type parameter as contravariant by using the in keyword:
interface IContravariant<in R>
And you can also support both for different type parameters:
interface IVariant<out R, in A>
So why can't you suport both for a single type parameter?