По умолчанию .Net завершает сериализацию XML в виде нуля в узле, который похож на этот
<SomeNode p3:nil="true" xmlns:p3="http://www.w3.org/2001/XMLSchema-instance" />
К сожалению, учитывая, что объектная модель, которую я сериализирую, имеет много-много нулевых значений, я получаю очень большой XML-документ (185 МБ), когда он должен быть намного меньше, а нулевые узлы полностью удалены (20 МБ)
Определение объекта генерируется автоматически, когда я добавляю ссылку на веб-сервис, поэтому, к счастью, он объявлен как частичный класс, и я могу создать свои собственные частичные классы, которые добавляют группу ShouldSerialize*
методов, чтобы предотвратить сериализацию любых нулевых значений .
Однако это довольно утомительно, так как классы большие, и их много.
Можно ли использовать рефлексию, чтобы упростить процесс добавления ShouldSerialize*
методов в класс во время выполнения для всех открытых свойств?
Как я уже писал, я делал это вручную для некоторых классов, и это очень повторяющиеся, сотни функций, которые выглядят так
public bool ShouldSerializeNotes() { return Notes != null; }
Спасибо,
-с