我定义了这个方法:
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;
}
Run Code Online (Sandbox Code Playgroud)
用于将类型1的列表转换为类型2的列表.
不幸的是我忘记了,C#编译器在这个阶段不能说可以T1转换为T2,所以它抛出错误:
错误CS0030:无法将T1类型转换为T2
有人可以指导我如何正确地做到这一点?我现在需要这个方法只将自定义类的列表转换为列表object,因此在.NET中所有内容都object应该起作用.
基本上我所期望的是一些语法告诉编译器T2(object)是T1(MyClass)的基础,所以类似于:
public static List<T2> ConvertList<T1, T2>(List<T1> param) where T2: base of T1
Run Code Online (Sandbox Code Playgroud)
(... 其中T2:T1的基数)
您可以在通用参数中指定它:
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;
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
396 次 |
| 最近记录: |