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_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);
4

1 回答 1

4

您当前的约束没有意义。你的意思是:

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