class Program
{
static void Main(string[] args)
{
//GrandFather gf = new Son();
IGF<Father> igf = new MyClass();
}
}
public class Father
{
}
public class Son : Father
{
}
public class MyClass : IGF<Son>
{
public void Method()
{
//DoSomething
}
}
public interface IGF<T> where T : Father
{
void Method();
}
大家好,我在使用超类的泛型类时遇到了一个问题。 任何人都可以告诉我为什么第6行是错误的,因为当我们使用list时,我们总是说IList ss = new List();
答案 0 :(得分:5)
如果您使用的是C#4.0,则可以将out
关键字添加到IGF
实施中,使其成为covariant interface。这允许您具有基类的通用(此处为Father
),并使其指向具有派生泛型类型(Son
)的相同接口的实例。