我的问题基本上是一个简单的问题,尽管我在这里寻找的答案是深入的: 如何 LINQ to XML 在幕后工作?
现在,我已经有了相当多的LINQ to XML用于各种应用程序的经验,所以它的接口对我来说并不陌生,但我对内部的运行方式一无所知。现在,我对LINQ提供程序的工作方式(实现方式)有了一些了解 IQueryable
和 IQueryProvider
并且利用访客模式,实质上)。但是,我还没有发现LINQ to XML的LINQ提供程序的任何内容 - 即使搞乱了Reflector并没有让我任何地方,尽管我可能错过了显而易见的事情。最有趣的是,我无法找到LINQ提供程序的任何证据(实现 IQueryProvider
在...内 System.Xml.Linq
装配/名称空间。
从观察LINQ到XML模型,它让我觉得它是一种相当独特的LINQ形式,因为LINQ查询和相关语法似乎不是技术的重要组成部分,而且它似乎更多地基于可查询的DOM提供了许多有用的扩展方法的模型。实际上,我首先要知道的是,LINQ to XML甚至是否具有标准意义上的查询提供程序(例如LINQ to SQL),或者它本质上是一个带有扩展方法的框架,您可以在其上使用LINQ to Objects来方便使用。另外,我也很好奇如何完成从XML代码到DOM层次结构的解析/转换 - 是 XDocument
qutie类似于旧 XmlDocument
在这个意义上?它是否使用了 XmlReader
或者在幕后解密和解释加载时的文件?
这是一个非常开放的问题,因此任何关于LINQ to XML如何在幕后运行的信息都将受到欢迎。我的目的主要是建立一个如何设计这种特定LINQ技术的图片,以便随后我可以尝试自己模拟一种与XML结构类似的格式。