返回一个通用的隐式引用

时间:2012-11-30 07:48:24

标签: c# .net generics

public class Display<T> where T : class, IDisplay<T>
{
    public List<T> MyList { get; set; }
    public int Total { get; set; }

    public Display(List<T> myList, int total)
    {
        MyList = myList;
        Total = total;
    }
}

public interface IDisplay<T> where T : class
{
    List<T> MyList { get; set; }
    int Total { get; set; }
}


MyClass() : IMyClass
{
}

public interface IMyClass
{
}

当我使用时:

return new Display<IMyClass>(listOffIMyClass, anIntValue); 

我收到此错误: IMyClass不能在泛型类型或方法“Display”中用作类型参数“T”。 没有从'IMyClass'到'IMyClass'的隐式引用转换。

1 个答案:

答案 0 :(得分:7)

嗯,是的 - 你说过用T的{​​{1}}必须实现Display<T>IDisplay<T>没有实现IMyClass

实际只是想让IDisplay<IMyClass>实施Display<T>吗?如果是这样,你想要:

IDisplay<T>

现在,您仍然将public class Display<T> : IDisplay<T> where T : class 限制为引用类型,但您 约束T来实施T