我有一个对象是:
IQueryable<Foo>
我想将它传递给一个函数,该函数需要:
IQueryable<IFoo>
Foo 确实实现了 IFoo
为什么不能编译?什么是最好的转换方式来让这项工作发挥作用?
最佳答案
协方差和逆方差在 .NET 4 BCL 中添加,在 .NET 3.5 BCL 中不存在。
在 3.5 中,您可以通过使用 Select
操作转换为您的接口(interface)类型来解决此限制:
IQueryable<Foo> foos = ..;
myFunc(foos.Select(x => (IFoo)x));
编辑(来自 Reed 的评论,如下):
IQueryable<Foo> foos = ..;
myFunc(foos.Cast<IFoo>());
关于c# - 如果对象实现了该接口(interface),我可以将 IQueryable<Foo> 传递给 IQueryable<IFoo> 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4940644/