1

授業を受けました

public class ID_Name<T>
{
    public ID_Name(T id)
    {
        this.ID = id;
    }

    public T ID { get; set; }

    public string Name
    {
        get 
        {
            return Helper.SomeReturnValue;            
        }
    }
}

私がしたいのは、ID_Name.ID を Add のパラメーターとして渡すことができる ID_Name のカスタム リストを生成することだけです。私は次のことを試しました:

public class ID_Name_List<T> : IList<T> where T : ID_Name<T>

しかし、次のエラーが表示されます。

型 "EProtokollStatus" は、ジェネリック型またはメソッド "ID_Name_List<\T>" の型パラメーター "T" として使用できません。ID_Name<\EProtokollStatus> の「EProtokollStatus」からのボックス化変換や型パラメータ変換はありません。

私はここでこの問題について何かを読みました: No boxing or type parameter conversion for generic Type parameter but I can't see a restrict without ID_Name here. 私が表現したいことはすべて「ID_Name_ListのID_Nameと同じ型Tを使用する」ことなので、これはどういうわけか間違っているかもしれませんが、どうすればそれを達成できますか?

ここで何かを見つけました: C#: さまざまな型のジェネリック クラスのリストを宣言して使用する方法は? しかし、可能なすべてのタイプに対して多くの異なるクラスを作成したくありません。

私が達成したいのは次のようなものです

ID_Name_List<EProtokollStatus> myList = new ID_Name_List<EProtokollStatus>();
myList.Add(EProtokollStatus.ValueX);
4

1 に答える 1

4

現在の制約は意味がありません。もしかして:

public class ID_Name_List<T> : IList<ID_Name<T>>
于 2012-08-31T12:11:56.930 に答える