为什么xsd.exe为xs:integer生成字符串属性?
当我使用xsd.exe从xsd模式生成ac#类时,我觉得这个行为有点奇怪。
我的元素:
生成为:
[System.Xml.Serialization.XmlElementAttribute(DataType="integer", Order=5)] public string InvoiceNo { ... }
为什么该属性不是作为int而不是字符串生成的?
此行为是设计使然 :
xs:integer
类型指定为其大小没有上限或下限的数字。 因此,XML序列化和validation都不会将其映射到System.Int32类型。 相反,XML序列化将xs:integer
映射到字符串,而validation将其映射到比.NET Framework中的任何整数类型大得多的Decimal类型
使用xs:int
,这是一个带符号的32位整数,让Xsd.exe将它映射到System.Int32 :
以下是XML Schema Definition标准中定义的数据类型的详细列表 。