我上课了
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);
答案 0 :(得分:4)
你当前的约束毫无意义。你的意思是:
public class ID_Name_List<T> : IList<ID_Name<T>>