为什么 xdx.exe 为 xs:nonNegativeInteger 生成字符串 属性?

Why does xdx.exe generate string property for xs:nonNegativeInteger?

我的元素:

<xs:element name="achats" type="xs:nonNegativeInteger" minOccurs="0"/>

生成为:

[System.Xml.Serialization.XmlElementAttribute(DataType="nonNegativeInteger")]
public string achats
{
   ...
}

为什么这个 属性 不是生成为小数而不是字符串? 在这个文档中应该是 System.Decimal https://msdn.microsoft.com/fr-fr/library/aa719879(v=vs.71).aspx

XSD是其他公司发的,实在没法修改。我想我没有正确使用 xsd.exe 但我不知道如何...

提前致谢

看来在较新版本的.net中是正常的:

nonNegativeInteger | String

https://msdn.microsoft.com/fr-fr/library/system.xml.serialization.xmlelementattribute.datatype(v=vs.110).aspx

而 W3 写道

[Definition:] nonNegativeInteger is ·derived· from integer by setting the value of ·minInclusive· to be 0

https://www.w3.org/TR/2001/REC-xmlschema-2-20010502/#nonNegativeInteger