我有一堂课
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_Name.ID 作为参数传递给 Add。我尝试了以下方法:
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但我在这里看不到除 ID_Name 之外的限制。不知何故,这可能是错误的,因为我想要表达的一切都是“使用与 ID_Name 中相同的类型 T 作为 ID_Name_List”,但我该如何实现呢?
我在这里找到了一些东西:C#:声明和使用具有不同类型的泛型类列表,如何?但我不想为所有可能的类型创建许多不同的类。
我想要实现的只是
ID_Name_List<EProtokollStatus> myList = new ID_Name_List<EProtokollStatus>();
myList.Add(EProtokollStatus.ValueX);