Visual Studio:使用整数生成xsd问题的代码

时间:2011-11-03 07:09:14

标签: c# xsd code-generation integer xsd.exe

有人能告诉我,为什么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 - 整数有什么问题?

提前致谢!

2 个答案:

答案 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#中没有可处理无界整数的数值数据类型,因此解串器选择字符串类型,因为它是唯一可以安全处理此值的类型。