如何解决C#约束T:V的方法
我有这种方法:
void SomeMethod<T,V>() where T:V
{
List<T> listT = getT();
List<V> listV = listT.ToList<V>()
}
它说listT
不包含ToList()
方法。
以上实现无效。 但这适用于具体的类,如下所示:
interface Ifoo{}
class Bar : Ifoo{}
List<Bar> bar = getBar();
List<Ifoo> bar2 = bar.ToList<Ifoo>()
那是为什么? 如何使该方法适用于这些泛型约束?
解决方法
import { data } from 'config/data';
起作用的原因是因为可以确保编译器 bar.ToList<Ifoo>()
实现Bar
。
但是,当您处于通用上下文中时,即使Ifoo
是T
的约束,编译器也无法解析扩展方法(即使我们认为应该使用扩展方法)有能力)。
您可能只想使用Cast
...假设V
可以广播到T
:
将IEnumerable的元素转换为指定的类型
示例
V
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。