这是一个错误吗?
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:simpleType name="sbrSexItemType">
<xsd:restriction base="xsd:string">
<xsd:enumeration value="1"/>
<xsd:enumeration value="2"/>
<xsd:enumeration value="3"/>
<xsd:enumeration value="0"/>
</xsd:restriction>
</xsd:simpleType>
<xsd:element name="TestSexItemType1" type="sbrSexItemType"/>
<xsd:element name="TestSexItemType2" type="sbrSexItemType"/>
</xsd:schema>
我得到了:
/// <remarks/>
[System.CodeDom.Compiler.GeneratedCodeAttribute("xsd", "2.0.50727.3038")]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlRootAttribute("TestSexItemType1", Namespace="", IsNullable=false)]
public enum sbrSexItemType {
/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("1")]
Item1,
/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("2")]
Item2,
/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("3")]
Item3,
/// <remarks/>
[System.Xml.Serialization.XmlEnumAttribute("0")]
Item0,
}
这是一种玩笑吗?甚至没有生成错误。生成的代码如何以任何形状或形式表示XSD?
答案 0 :(得分:1)
当然,可能的值1,2,3,0
无法直接转换为枚举值(标识符不能以数字开头),因此xsd在创建标识符时将“Item
”放在值之前。 XmlEnumAttribute
告诉XmlSerializer
在读取或写入Xml文件时应该实际使用哪个值。所以看起来生成的枚举完成了这项工作。
答案 1 :(得分:0)
如果你有其他类型而不是枚举。你应该把枚举放在顶部。我不知道为什么,但我的问题就这样解决了。