Сгенерированные классы xsd.exe не сериализируют атрибуты значения по умолчанию

У меня есть немного .cs файлов, сгенерированных xsd.exe схемой XSD.

Моя проблема состоит в том, что, когда я пытаюсь сериализировать те классы к xml, атрибуты, значения которых соответствуют значениям по умолчанию, определенным в xsd схеме, не сериализируются.

Я узнал, что моя проблема решена, когда я удаляю [System.ComponentModel.DefaultValueAttribute(typeof(<someType>), "<SomeValue>")] атрибут для участника, представляющего поле по умолчанию.

Таким образом, моим вопросом не является там более изящный способ сделать это? Например, есть ли какой-либо способ указать, что я хочу, чтобы значения по умолчанию были сериализированы так или иначе?

5
задан Koynov 5 March 2010 в 14:14
поделиться

1 ответ

Краткая версия: да. похоже, это самый простой подход.

Я пробовал «очевидные» вещи (в частности, шаблоны * Specified и ShouldSerialize * , которые поддерживает XmlSerializer , но также IsNullable) ) и просто продолжает не включать значение.

Следующие варианты будут либо IXmlSerializable (что очень сложно), либо XmlAttributeOverrides (дублирование усилий) - ни один из них здесь не особо заманчив. Интересно, ваш нынешний подход - меньше работы? Конечно, вы можете просто экспортировать WSDL и отредактировать его, чтобы удалить значение по умолчанию (и сгенерировать из отредактированной версии).

В стороне - если это был WCF, есть [DataMember (EmitDefaultValue = ...)] , который контролирует ; может они добавили это как запрос функции?

4
ответ дан 15 December 2019 в 00:58
поделиться
Другие вопросы по тегам:

Похожие вопросы: