Как сгенерировать код клиента и интерфейса из WSDL.exe? - PullRequest
5 голосов
/ 07 апреля 2011

Я пишу некоторые сервисы .NET 2.0 ASMX. У меня есть сценарий, в котором мне нужно сгенерировать прокси-сервер веб-службы с помощью WSDL.exe, но сгенерированный класс не реализует интерфейс, поэтому я не могу подделать веб-службу для тестирования.

Вот один из подходов, которые я пробую, но на данный момент он не компилируется: я знаю, что WSDL.exe может генерировать интерфейсы с использованием опции /serverInterface. В принципе, я хотел бы сгенерировать как Интерфейс, так и классы прокси следующим образом:

wsdl MyWebService.wsdl / nologo / l: CS /namespace:Juliet.Services /o:C:\projects\JulietService\MyWebServiceInterface.cs / ServerInterface

wsdl MyWebService.wsdl / nologo / l: CS /namespace:Juliet.Services /o:C:\projects\JulietService\MyWebServiceProxy.cs

Затем включите оба файла в мой проект. После этого я смогу извлечь свой собственный класс из сгенерированного прокси и реализовать сгенерированный интерфейс следующим образом:

public class MockableWebService : MyWebService, IMyWebServiceSoap11Binding
{
    // No implementation, the interface is already implicitly implemented
    // from the methods in the base class.
}

Это должно работать в принципе, , за исключением , и интерфейсные, и прокси-файлы автоматически генерируют одинаковые определения классов для моих сообщений запроса / ответа, что приводит к сотням ошибок типа The namespace 'Juliet.Services' already contains a definition for 'ABC'.


Я хотел бы сохранить генерацию интерфейса / прокси-сервера как можно более автоматизированной - это означает, что я хочу избежать изменения сгенерированного кода вручную любой ценой.

Кто-нибудь может предложить способ создания интерфейса и прокси-сервера одновременно с WSDL.exe или лучший способ получить результаты, описанные выше?

1 Ответ

2 голосов
/ 07 апреля 2011

Разве .NET 2.0 WSDL.EXE не генерирует частичные классы?Затем вы можете реализовать интерфейс в другой части класса:

public partial class MockableWebService : IMyWebServiceSoap11Binding
{
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...