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