返回一个通用的隐式引用

Kri*_*s-I 2 .net c# 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
{
}
Run Code Online (Sandbox Code Playgroud)

我用的时候:

return new Display<IMyClass>(listOffIMyClass, anIntValue); 
Run Code Online (Sandbox Code Playgroud)

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

Jon*_*eet 7

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

真的只是想制造Display<T>工具IDisplay<T>吗?如果是这样,你想要:

public class Display<T> : IDisplay<T> where T : class
Run Code Online (Sandbox Code Playgroud)

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