IList using covariance and contravariance in c#, is this possible?
c#, contravariance, covariance, generics, ilist
Solution
No, you can't. In your example `IList<T>` is invariant. `IList<T>` would require to declare `in`/`out` to be covariant/contravariant. It's not possible to do that just by inheriting some interface that is covariant.
Problem
would this be possible? (I don't have vs. 2010, so I can't try it myself, sorry) ``` public interface IComplexList<out TOutput, in TInput> where TOutput : TInput { public IEnumerator<TOutput> GetEnumerator(); public void Add(TInput item); } public interface IList<T> : IComplexList<T, T> { } ``` If I get it right, you could use this to actually implement covariance and contravariance in the same interface.