The following example shows how to declare, extend, and implement a covariant generic interface. It also shows how to use implicit conversion for classes that implement a covariant interface. // Covariant interface. interface ICovariant { } // Extending covariant interface. interface IExtCovariant : ICovariant { } // Implementing covariant interface. class Sample : ICovariant { } class Program { static void Test() { ICovariant iobj = new Sample(); ICovariant istr = new Sample(); // You can assign istr to iobj because // the ICovariant interface is covariant. iobj = istr; } }