实现LINQ提供程序
本文关键字:程序 LINQ 实现 | 更新日期: 2023-09-27 18:17:28
我目前正在为我自己的教育目的实现一个LINQ提供程序。我最近已经设法让Count()
扩展工作,到目前为止一切顺利。
现在我的问题不是呼救,而只是请求一些澄清。
为了创建提供程序,需要实现两个接口:IQueryProvider
和类似IOrderedQueryable<>
的接口。MSDN明确了如何实现它们,但有一点仍然让我感到困惑。为什么这些接口由单独的类实现,即使每个IOrderedQueryable
实例引用自己的IQueryProvider
实例,两个对象实际上(间接)引用相同的数据?
他们真的需要分开吗?
。我能够像这样组合它们:class Source<RowContract> : IQueryProvider, IOrderedQueryable<RowContract>
-以简化类型信息访问。这种实现现在可以正常工作,看起来比"分离类"方法更简单、更清晰。
我想知道我的组合实现是否有缺陷。或者,它是有效的?
正如在msdn上提到的,IQueryProvider专注于创建和执行查询。而IQueryable是被查询的东西。把它们放在一起可能会把类似的代码放在一起,但它最终没有尊重关注点分离。