Подтвердить что ты не робот

Почему xsd.exe генерирует свойство string для xs: integer?

Когда я сгенерирую класс С# из схемы xsd с xsd.exe, я нахожу это поведение немного странным.

Моя элемент:

<xs:element name="InvoiceNo" type="xs:integer"/>

создается для:

[System.Xml.Serialization.XmlElementAttribute(DataType="integer", Order=5)]
public string InvoiceNo
{
   ...
}

Почему это свойство не генерируется как int вместо строки?

4b9b3361

Ответ 1

Это поведение по дизайну:

Тип xs:integer указывается как число без верхнего или нижнего связанный по его размеру. По этой причине ни сериализация XML, ни validation сопоставьте его с типом System.Int32. Вместо этого, сериализация XML отображает xs:integer в строку, а валидация сопоставляет ее с Десятичный тип, который намного больше любого из целочисленных типов в .NET Framework

Используйте xs:int, который представляет собой подписанное 32-разрядное целое число, чтобы Xsd.exe сопоставить его с System.Int32:

<xs:element name="InvoiceNo" type="xs:int" />

Здесь подробный список типов данных, определенных в стандарте определения схемы XML.