Проблема с перечислением при импорте WSDL в Visual Studio - PullRequest
1 голос
/ 20 июня 2011

У меня есть перечисление, объявленное в 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,
    }
}

Конечно, я хотел бы иметь перечисление без этой части 'Item'.Почему это происходит и как я могу это передать?

1 Ответ

0 голосов
/ 22 июня 2011

Причина добавления слова 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,
    }
}

Имейте в виду, что если вы восстановите прокси, вы потеряете это изменение.

С уважением,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...