Xsd.exe在继承枚举时生成错误的C#类
这是虫子吗Xsd.exe在继承枚举时生成错误的C#类,c#,xsd,xsd.exe,C#,Xsd,Xsd.exe,这是虫子吗 <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"> <xsd:simpleType name="sbrSexItemType"> <xsd:restriction base="xsd:string"> <xsd:enumeration value="1"/> <xsd:en
<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,
}
//
[System.CodeDom.Compiler.GeneratedCodeAttribute(“xsd”、“2.0.50727.3038”)]
[System.SerializableAttribute()]
[System.Xml.Serialization.XmlRootAttribute(“TestSexItemType1”,Namespace=”“,IsNullable=false)]
公共枚举项类型{
///
[System.Xml.Serialization.XmlEnumAttribute(“1”)]
项目1,
///
[System.Xml.Serialization.XmlEnumAttribute(“2”)]
项目2,
///
[System.Xml.Serialization.XmlEnumAttribute(“3”)]
项目3,
///
[System.Xml.Serialization.XmlEnumAttribute(“0”)]
项目0,
}
这是玩笑吗?甚至没有生成错误。生成的代码如何以任何形状或形式表示XSD?当然,可能的值
1,2,3,0
不能直接转换为枚举值(标识符不能以数字开头),因此XSD在创建标识符时将“Item
”放在值之前。XmlEnumAttribute
告诉XmlSerializer
在读取或写入Xml文件时应该实际使用哪个值。看起来生成的枚举完成了这项工作 当然,可能的值1,2,3,0
不能直接转换为枚举值(标识符不能以数字开头),因此xsd在创建标识符时将“Item
”放在值之前。XmlEnumAttribute
告诉XmlSerializer
在读取或写入Xml文件时应该实际使用哪个值。看起来生成的枚举完成了这项工作 如果您有其他类型而不是枚举。您应该将枚举放在顶部。我不知道为什么,但我的问题就这样解决了。如果您有其他类型而不是enum。您应该将枚举放在顶部。我不知道为什么,但我的问题就这样解决了。不,我的重点不是生成“TestSexItemType1”类型,而是生成枚举并指定根元素“看起来像”类型。然后它完全忽略“TestSexItemType2”,就好像它不存在一样?..@SleeperSmith应该有一个类用于完整的xsd。看起来怎么样?不,没有。不,我的重点不是生成“TestSexItemType1”类型,而是生成枚举并指定根元素“看起来像”类型。然后它完全忽略“TestSexItemType2”,就好像它不存在一样?..@SleeperSmith应该有一个类用于完整的xsd。看起来怎么样?不,没有。就这些,谢谢你的建议。我已经把从枚举继承的两种类型放在一起了,仍然没有运气。谢谢你的建议。我已经把从枚举继承的两种类型放在一起了,但仍然不走运。