C# 返回泛型、隐式引用 公共类显示,其中T:class,IDisplay { 公共列表MyList{get;set;} 公共整数总计{get;set;} 公共显示(列表myList,整数总计) { MyList=MyList; 总计=总计; } } 公共接口IDisplay,其中T:class { 列表MyList{get;set;} int Total{get;set;} } MyClass():IMyClass { } 公共接口IMyClass { }

C# 返回泛型、隐式引用 公共类显示,其中T:class,IDisplay { 公共列表MyList{get;set;} 公共整数总计{get;set;} 公共显示(列表myList,整数总计) { MyList=MyList; 总计=总计; } } 公共接口IDisplay,其中T:class { 列表MyList{get;set;} int Total{get;set;} } MyClass():IMyClass { } 公共接口IMyClass { },c#,.net,generics,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; Tota

当我使用:

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
{
}
返回新显示(ListofMyClass,一个tValue);
我得到这个错误: IMyClass不能用作泛型类型或方法“Display”中的类型参数“T”。
没有从'IMyClass'到'IMyClass'的隐式引用转换。

嗯,是的-您说过用于显示的
T
必须实现
IDisplay
,而
IMyClass
没有实现
IDisplay

你真的只是想让
显示
实现
IDisplay
?如果是,您希望:

return new Display<IMyClass>(listOffIMyClass, anIntValue); 
公共类显示:IDisplay其中T:class

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

您可能误读了错误消息:应该说没有从“IMyClass”到“IDisplay”的隐式引用转换。
public class Display<T> : IDisplay<T> where T : class