Рассмотрим два класса:
class B {
...
}
class A {
B x;
}
Когда A
сериализуется в XML, я получаю что-то вроде следующего:
<A>
<B>
...
</B>
</A>
Но чтобы остановить это, я могу сделать следующее:
class A : IXmlSerializable {
B x;
public void WriteXml(XmlWriter writer)
{
x.WriteXml(writer);
}
}
Затем я получаю результат сериализации, подобный следующему:
<A>
...
</A>
Что я и хочу.
Проблема в том, что это работает, только если B
также реализует IXmlSerialisable
.
Если используется только сериализация по умолчанию, компиляция не производится.
Есть ли функция, которая делает то же, что ожидается от WriteXml
, за исключением того, что она также работает с классами, отличными от IXmlSerialisable
, т.е. записывает XML объекта, переданного записывающему устройству, без включения тегов верхнего уровня (как WriteXml
не делает).
Кстати, мне понадобится то же самое для ReadXml
, но я предполагаю, что они идут парами.