2
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”的隐式引用转换。

4

1 回答 1

7

嗯,是的 - 你已经说过T用于 aDisplay<T>必须实现IDisplay<T>,而IMyClass不是实现IDisplay<IMyClass>

真的只是想Display<T>实现IDisplay<T>吗?如果是这样,你想要:

public class Display<T> : IDisplay<T> where T : class

现在你仍然被限制T为引用类型,但你没有被限制T为实现IDisplay<T>.

于 2012-11-30T07:52:12.930 回答