通用类的自定义通用列表

时间:2012-08-31 12:04:09

标签: c#-4.0 generic-list generics

我上课了

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的自定义List,我可以在Add中传递ID_Name.ID作为参数。 我尝试了以下方法:

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

然后我收到以下错误:

  

“EProtokollStatus”类型不能用作类型参数“T”   泛型类型或方法“ID_Name_List&lt; \ T&gt;”。没有拳击   从“EProtokollStatus”转换或类型参数转换   ID_NAME&LT; \ EProtokollStatus&GT;

我在这里读到了一些关于这个问题的内容:No boxing or type parameter conversion for generic Type parameter但是除了ID_Name之外我看不到限制。 这可能是错误的,因为我要表达的是“使用与ID_Name中相同的类型T作​​为ID_Name_List”,但我该如何实现呢?

我在这里找到了一些东西:C#: Declaring and using a list of generic classes with different types, how?但我不想为所有可能的类型创建许多不同的类。

我想要实现的就像是

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

1 个答案:

答案 0 :(得分:4)

你当前的约束毫无意义。你的意思是:

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