当我使用xsd.exe从xsd架构生成c#类时,我觉得这个行为有点奇怪。
我的元素:
<xs:element name="InvoiceNo" type="xs:integer"/>
生成为:
[System.Xml.Serialization.XmlElementAttribute(DataType="integer", Order=5)]
public string InvoiceNo
{
...
}
为什么该属性不是以 int 而非字符串生成的?
答案 0 :(得分:58)
此行为为by design:
xs:integer
类型被指定为没有大写或小写的数字 受其大小限制。出于这个原因,既没有XML序列化也没有 验证将其映射到 System.Int32 类型。相反,XML序列化 将xs:integer
映射到字符串,同时验证将其映射到 十进制类型比任何整数类型都要大得多 .NET Framework
使用xs:int
(带符号的32位整数)将Xsd.exe映射到System.Int32:
<xs:element name="InvoiceNo" type="xs:int" />
这是XML Schema Definition标准中定义的detailed list数据类型。