2017-02-13 62 views
7

我所限定的本方法:通用方法和轉換:如何定義類型1可轉化爲2型

public static List<T2> ConvertList<T1, T2>(List<T1> param) where T1:class where T2:class 
{ 
    List<T2> result = new List<T2>(); 

    foreach (T1 p in param) 
     result.Add((T2)p); 

    return result; 
} 

對於類型1的解釋轉換成類型的詞典2.

不幸的是我忘,即C#編譯器不能在這個階段,T1可轉換爲T2說,所以它拋出錯誤:

error CS0030: Cannot convert type T1 to T2

有人能告訴我該怎麼辦呢親佩爾利?我現在只需要這種方法將自定義類的列表轉換爲列表object,因此在.NET中,所有東西都來自object它應該可以工作。

基本上我所期望的是一些語法告訴編譯器T2(object)爲基地,爲T1(MyClass),所以像:

public static List<T2> ConvertList<T1, T2>(List<T1> param) where T2: base of T1 

(... 其中T2:T1基地

+0

使用'其中T2:T1'。 – Abion47

+0

@ Abion47感謝您展示方向,但我想你想說'在哪裏T1:T2' –

+0

也許吧。你的措辭有點令人困惑,你希望它走向哪個方向。 – Abion47

回答

8

你可以在一個泛型參數指定:

public static List<T2> ConvertList<T1, T2>(List<T1> param) 
       where T1:class,T2 
       where T2:class 
{ 
    List<T2> result = new List<T2>(); 

    foreach (T1 p in param) 
     result.Add((T2)p); 

    return result; 
} 
+0

完美,這就是我一直在尋找的東西。爲什麼我沒有想到這個語法? –

相關問題