XmlSerializer - обязательные элементы - PullRequest
5 голосов
/ 31 января 2012

Я использую XmlSerializer для службы WCF (в случае моей службы есть причины для этого). Но недавно я столкнулся с проблемой: я не могу найти простой способ сделать обязательным свойство ссылочного типа, то есть сделать так, чтобы его определение в XSD выглядело так:

<xs:element minOccurs="1" maxOccurs="1" name="Name" type="xs:string"/>

вместо этого:

<xs:element minOccurs="0" maxOccurs="1" name="Name" type="xs:string"/>

Вот код для собственности:

[XmlElement]
public string Name { get; set; }

Я знаю, что с DataContractSerializer я могу сделать это:

[DataMember(IsRequired = true)]
public string Name { get; set; }

и я получу нужную схему.

Есть идеи, как получить функциональность, аналогичную IsRequired, с атрибутами XmlSerializer?

Спасибо.

1 Ответ

0 голосов
/ 31 января 2012

Использование

[XmlElement(IsNullable=true)]

должен заставить сериализовать элемент, даже если он равен нулю, поэтому minOccurs 1 (я думаю - не проверял).

...