泛型 错误 无法将类型 “class1<type1>” 转换为“class1<typeBase>”
我的函数
public void Myfunction(class1<typeBase> 参数)
{
...
}
希望传入参数的类型class1<type1>
type1继承于typeBase
如何做到?
如果直接传会报错!
class1<type1> 参数1;
....
Myfunction(参数1);
编译报错
泛型 错误 无法将类型 “class1<type1>” 转换为“class1<typeBase>”
------解决方案--------------------
4.0以下的貌似做不到,4.0或其以上的可以通过定义<in T>实现
------解决方案--------------------
public void Myfunction(class1<typeBase> 参数)
{
...
}
=>
public void Myfunction<T>(class1<T> 参数) where T : typeBase
{
...
}
------解决方案--------------------
探讨 4.0以下的貌似做不到,4.0或其以上的可以通过定义<in T>实现
------解决方案-------------------- 把class1<type1>整体当做一个类了,应该是
public void Myfunction<T>(T myclass)
限定T是typeBase
------解决方案-------------------- 探讨 引用: 4.0以下的貌似做不到,4.0或其以上的可以通过定义<in T>实现 4.0也做不到。
------解决方案--------------------
探讨 引用: 引用: 4.0以下的貌似做不到,4.0或其以上的可以通过定义<in T>实现 4.0也做不到。 必须做不到。 因为class1<type1>和class1<typeBase>没有任何关系。
------解决方案-------------------- List<type1> thelist = ...
List<typeBase> list = thelist.Select(x => x as typeBase).ToList();
------解决方案-------------------- 探讨 引用: 引用: 引用: 4.0以下的貌似做不到,4.0或其以上的可以通过定义<in T>实现 4.0也做不到。 必须做不到。 因为class1<type1>和class1<typeBase>没有任何关系。 做不到的原因不是这个,是因为C# 4.0只能支持泛型和委托的协变,不支持类。