具有超类的泛型类

时间:2012-11-13 01:34:24

标签: c# generics superclass

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();

1 个答案:

答案 0 :(得分:5)

如果您使用的是C#4.0,则可以将out关键字添加到IGF实施中,使其成为covariant interface。这允许您具有基类的通用(此处为Father),并使其指向具有派生泛型类型(Son)的相同接口的实例。