【问题标题】:Problem with enumeration when importing WSDL to Visual Studio将 WSDL 导入 Visual Studio 时出现枚举问题
【发布时间】:2011-06-20 09:09:24
【问题描述】:

我有一个像这样在 WSDL 中声明的枚举

<xsd:simpleType name="KopRate">
        <xsd:annotation>
          <xsd:documentation>Information</xsd:documentation>
        </xsd:annotation>
        <xsd:restriction base="xsd:string">
          <xsd:enumeration value="0" />
          <xsd:enumeration value="13" />
          <xsd:enumeration value="21" />
          <xsd:enumeration value="56" />
          <xsd:enumeration value="ts" />
          <xsd:enumeration value="kp" />
        </xsd:restriction>
</xsd:simpleType>

问题是 Visual Studio 会生成一个像这样的枚举类(添加这个 'Item' 词):

namespace TestNmsp
{
    [GeneratedCode("System.Xml", "4.0.30319.1")]
    [XmlType(Namespace = "http://www.kop.com/test/schema")]
    [Serializable]
    public enum KopRate
    {
        [XmlEnum("0")] Item0,
        [XmlEnum("13")] Item13,
        [XmlEnum("21")] Item21,
        [XmlEnum("56")] Item56,
        ts,
        kp,
    }
}

当然,我希望有一个没有这个“项目”部分的枚举。为什么会发生这种情况,我该如何通过?

【问题讨论】:

  • “为什么”是因为 C# 标识符不能以数字开头。我将为知道的人留下“如何”
  • 嗯,也许没人知道。它真的会导致问题吗?我从XmlEnum 属性中猜想,webservice 调用实际上可以正常工作,只是您希望您的代码能够通过它们的“真实”名称来引用枚举值?

标签: c# .net web-services visual-studio-2010 wsdl


【解决方案1】:

之所以添加Item这个词是因为:

public enum KopRate
{
    0,
    13,
    21,
    56,
    ts,
    kp
} 

对 C# 语法无效。使 WSDL 保持原样并能够反序列化可能值的解决方法是添加字母或其他内容作为前缀。在这种情况下,“项目”一词。

如果您可以控制 WSDL,建议更改枚举值以遵守命名约定。

如果您这样做可以控制 WSDL。您可以随时更改枚举,但保留 XMLEnum 属性,以便让反序列化过程正常工作。

例如:

namespace TestNmsp
{
    [GeneratedCode("System.Xml", "4.0.30319.1")]
    [XmlType(Namespace = "http://www.kop.com/test/schema")]
    [Serializable]
    public enum KopRate
    {
        [XmlEnum("0")] Rate0,
        [XmlEnum("13")] Rate13,
        [XmlEnum("21")] Rate21,
        [XmlEnum("56")] Rate56,
        ts,
        kp,
    }
}

请注意,如果您重新生成代理,您将丢失此更改。

问候,

【讨论】:

    猜你喜欢
    • 2015-12-07
    • 2017-07-22
    • 1970-01-01
    • 2023-03-21
    • 2016-06-21
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    • 2011-10-12
    相关资源
    最近更新 更多