У меня есть немного .cs файлов, сгенерированных xsd.exe схемой XSD.
Моя проблема состоит в том, что, когда я пытаюсь сериализировать те классы к xml, атрибуты, значения которых соответствуют значениям по умолчанию, определенным в xsd схеме, не сериализируются.
Я узнал, что моя проблема решена, когда я удаляю [System.ComponentModel.DefaultValueAttribute(typeof(<someType>), "<SomeValue>")]
атрибут для участника, представляющего поле по умолчанию.
Таким образом, моим вопросом не является там более изящный способ сделать это? Например, есть ли какой-либо способ указать, что я хочу, чтобы значения по умолчанию были сериализированы так или иначе?
Краткая версия: да. похоже, это самый простой подход.
Я пробовал «очевидные» вещи (в частности, шаблоны * Specified
и ShouldSerialize *
, которые поддерживает XmlSerializer
, но также IsNullable)
) и просто продолжает не включать значение.
Следующие варианты будут либо IXmlSerializable
(что очень сложно), либо XmlAttributeOverrides
(дублирование усилий) - ни один из них здесь не особо заманчив. Интересно, ваш нынешний подход - меньше работы? Конечно, вы можете просто экспортировать WSDL и отредактировать его, чтобы удалить значение по умолчанию (и сгенерировать из отредактированной версии).
В стороне - если это был WCF, есть [DataMember (EmitDefaultValue = ...)]
, который контролирует ; может они добавили это как запрос функции?