2012-08-31 143 views
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中添加參數。 我試過如下:

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

但後來我得到以下錯誤:

The type "EProtokollStatus" cannot be used as type parameter "T" in the generic type or method "ID_Name_List<\T>". There is no boxing conversion or type parameter conversion from "EProtokollStatus" in ID_Name<\EProtokollStatus>.

我讀到一些關於這個問題在這裏:No boxing or type parameter conversion for generic Type parameter,但我看不到的限制,除了ID_NAME這裏。 這在某種程度上可能是錯誤的,因爲我想表達的所有內容都是「在ID_Name_List中使用與ID_Name相同的類型T」,但我該如何實現這一點?

我在這裏找到了一些東西: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); 

回答

4

您當前的約束是沒有意義的。您的意思是:

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

是的,這就是我的意圖。非常感謝! – UNeverNo