2011-11-03 72 views
2

任何人都可以告訴我,爲什麼xsd中的整數元素正在字符串字段中進行轉換?Visual Studio:使用整數在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; 
    } 
} 

我的第一個假設,即所有字段串由真正的數據類型歸屬是不正確的 - 日期interpretered日期,布爾變量爲布爾變量 - 這有什麼錯整數?

在此先感謝!

回答

4

你需要的東西是這樣的:

<xs:element name="OwnerID" > 
    <xs:simpleType> 
     <xs:restriction base="xs:int" /> 
    </xs:simpleType> 
</xs:element> 
+0

我們已經得到了解決方案几乎同時 - ) –

+0

只需用xs替換xs:integer就足夠了:int – isHuman

2

sq33G的答案是正確的,但我想補充一點,你原來的XSD元素

<xs:element name="OwnerID" type="xs:integer"/> 

被轉換爲字符串的原因是因爲每W3C Numeric DataTypes ,xs:interger表示任何整數值。由於不限於32位或64位數字,並且C#中沒有可處理無限整數的數字數據類型,因此Deserializer正在選擇一種字符串類型,因爲它是唯一可以安全處理該值的類型。

+0

我需要糾正自己 - 我記得錯誤的行爲。 xs:integer映射到System.Decimal類型 – psubsee2003

相關問題