Используйте параметр /sharetypes
при вызове wsdl.exe
:
/ sharetypes Включает функцию обмена типами.Эта функция создает один файл кода с определением одного типа для идентичных типов, совместно используемых различными службами (пространство имен, имя и проводная подпись должны быть идентичны).Ссылка на службы с URL-адресами http: // в качестве параметров командной строки или создание документа discomap для локальных файлов.
Если классы точно совпадают, они должны генерироваться только один раз, если вы генерируете код для обоихуслуги в одной команде.Обе службы будут использовать один и тот же класс, поэтому преобразование не потребуется.
Редактировать:
Если пространства имен XML не совпадают (что является обычным явлением), .NET рассмотрит ихбыть разными, и это правильно.Вам нужно будет либо исправить веб-службы, чтобы типы были точно такими же (рекомендуется), либо выполнить преобразование между двумя сгенерированными типами.Это приведет к большому количеству скучного кода присваивания свойств, поэтому вы можете использовать что-то вроде AutoMapper для обработки преобразования.
wsdl.exe должен генерировать частичноеклассы , поэтому, если хотите, вы можете определить неявные преобразования между различными типами:
public static implicit operator addressTO1(addressTO source)
{
addressTO1 result = new addressTO1();
// Assign properties, etc.
return result;
}
Обычно я сам не большой поклонник неявных преобразований, но вв этом случае это может быть оправдано.