有人能告诉我,为什么xsd中的整数元素在字符串字段中被转换?
<xs:element name="OwnerID" type="xs:integer"/>
到
[System.Xml.Serialization.XmlElementAttribute(DataType = "integer")]
public string OwnerID
{
get
{
return this.ownerIDField;
}
set
{
this.ownerIDField = value;
}
}
我的第一个假设是所有字段都是由真实数据类型归属的字符串不正确 - 日期被解释为日期,bools为bools - 整数有什么问题?
提前致谢!
答案 0 :(得分:4)
你需要这样的东西:
<xs:element name="OwnerID" >
<xs:simpleType>
<xs:restriction base="xs:int" />
</xs:simpleType>
</xs:element>
答案 1 :(得分:2)
sq33G的答案是正确的,但我想补充一下原始XSD元素的原因
<xs:element name="OwnerID" type="xs:integer"/>
转换为字符串是因为每W3C Numeric DataTypes,xs:interger表示任何整数值。由于不限于32位或64位数,并且C#中没有可处理无界整数的数值数据类型,因此解串器选择字符串类型,因为它是唯一可以安全处理此值的类型。