Использование Reflector (или, если оно больше не бесплатно, ILSpy :);нет, я не сотрудник - просто тайно распространяю слово!) все каналы загрузки / сохранения отображаются на XmlReader
и XmlWriter
.Например - реализация XElement Load(Stream, LoadOptions)
делает это:
public static XElement Load(Stream stream, LoadOptions options)
{
XmlReaderSettings xmlReaderSettings = XNode.GetXmlReaderSettings(options);
using (XmlReader reader = XmlReader.Create(stream, xmlReaderSettings))
{
return Load(reader, options);
}
}
И это аналогичная история для всех других статических методов - включая Parse.
Но тогда есть XStreamingElement
конструктор - однако я не могу найти его реального использования вне самого класса XElement
.Похоже, это может быть оптимизированный тип для загрузки, который пока еще не используется.
Точно так же методы Save и WriteTo в конечном итоге используют экземпляр XmlWriter
- например:
public void Save(string fileName, SaveOptions options)
{
XmlWriterSettings xmlWriterSettings = XNode.GetXmlWriterSettings(options);
using (XmlWriter writer = XmlWriter.Create(fileName, xmlWriterSettings))
{
this.Save(writer);
}
}
Так что, по крайней мере, с точки зрения производительности они начали с правильных типов:)