svcutil генерирует ненужные классы-оболочки - PullRequest
7 голосов
/ 07 июня 2011

Я работаю над проектом, в котором используется контрактный подход.Мне дали WSDL и три xsd's.Когда я использую svcutil, он генерирует обертку вокруг класса ответа следующим образом:

public partial class getDataByIdResponse1 {

    public getDataByIdResponse getDataByIdResponse;

    public getDataByIdResponse1() {
    }

    public getDataByIdResponse1(getDataByIdResponse getDataByIdResponse) {
        this.getDataByIdResponse = getDataByIdResponse;
    }
}

getDataByIdResponse заключен в объект getDataByIdResponse1.Это сделано svcutil, и я понятия не имею, почему.Объект getDataByIdResponse1 не существует в WSDL:

<wsdl:message name="getDataById">
    <wsdl:part name="response" element="tns:getDataByIdResponse"/>
</wsdl:message>

<xs:element name="getDataByIdResponse">
    <xs:complexType>
        <xs:sequence>
            <xs:element name="data" type="sbc:DataType" minOccurs="1" maxOccurs="1" />
        </xs:sequence>
    </xs:complexType>
</xs:element>

Почему тип getDataByIdResponse заключен в getDataByIdResponse1?Есть ли переключатель для svcutil, который я должен был использовать?

Ответы [ 2 ]

0 голосов
/ 21 февраля 2012

Я в той же лодке, что и вы, но я не просто хочу с этим жить.Я хочу создавать чистые (развернутые) контракты.Если вам были даны wsdl и xsd, то есть некоторые правила, которым ваша схема и wsdl должны следовать, чтобы утилита svc могла генерировать развернутый код.Эти ссылки помогли мне немного лучше понять проблемук этим правилам.
Однако, как и Рон, я тоже бывал в ситуациях, когда проще всего с этим жить.

Надеюсь, это поможет.

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

Я нахожусь в той же ситуации (сначала контракт), и svcutil генерирует такой же код для меня, но я просто закрыл глаза, глубоко вздохнул и принял его: -)

Просто используйте типы без числового постфикса, и он просто работает.

...