interface IFoo<out T> {
T doThing();
}
class Bar : IFoo<int> {
int doThing() => 0;
}
var list = new List<IFoo<object>> {
new Bar() //fails to compile
};
public interface IFoo<out T>:IFoo
{
T doThing();
}
public interface IFoo
{
object doThing();
}
public class Bar : IFoo<int>
{
public int doThing(){return 0;}
object IFoo.doThing()
{
return doThing();
}
}
var list = new List<IFoo>
{
new Bar()
};