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

最佳答案

好吧,是的-您已经说过,用于TDisplay<T>必须实现IDisplay<T>,而IMyClass不实现IDisplay<IMyClass>

您实际上是否只是想让Display<T>实现IDisplay<T>?如果是这样,您要:

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


现在,您仍然将T约束为引用类型,但没有约束T来实现IDisplay<T>

关于c# - 返回一个通用的隐式引用,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13640996/

10-09 05:25