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

ええ、そうです - あなたは、Tused for aDisplay<T>は を実装する必要がありIDisplay<T>、を実装IMyClassしないと言いましたIDisplay<IMyClass>

本当にDisplay<T>実装するつもりだったのですかIDisplay<T>?もしそうなら、あなたはしたい:

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

今でもT参照型であることを制限していますが、実装することを制限していませんTIDisplay<T>

于 2012-11-30T07:52:12.930 に答える