我目前正在为自己的教育目的实施LINQ提供程序。我最近设法让Count()
扩展工作,到目前为止一直很好。
现在我的问题不是寻求帮助,而只是请求澄清。
要创建提供程序,需要实现两个接口:IQueryProvider
和IOrderedQueryable<>
之类的接口。 MSDN明确了如何实现它们,但有一点仍让我感到困惑。
为什么这些接口是由单独的类实现的,即使每个IOrderedQueryable
实例都引用自己的IQueryProvider
实例,并且这两个对象实际上(间接地)引用相同的数据?
他们真的需要分开吗?
此外。我可以像下面这样组合它们:class Source<RowContract> : IQueryProvider, IOrderedQueryable<RowContract>
- 以简化类型信息访问。这个实现现在正常工作,看起来比&#34;单独的类&#34;更简单明了。做法。
我想知道我的组合实施是否存在缺陷。或者,它可能有效吗?
任何解释都会受到重视。
答案 0 :(得分:3)
如msdn所述,IQueryProvider专注于创建和执行查询。鉴于IQueryable是被查询的东西。将它们全部放在一起可能会将类似的代码放在一起,但它最终并不尊重关注点的分离。