Пересылка IXmlSerializable методов - PullRequest
0 голосов
/ 10 июля 2019

Рассмотрим два класса:

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, но я предполагаю, что они идут парами.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...