Я начал писать интерфейс для API-интерфейсов FedEx webservice. У них есть 3 различных API, которые меня интересуют; Скорость, Корабль и Трек. Я генерирую служебные прокси с помощью SvcUtil.exe.
Различные конечные точки обслуживания определяются FedEx в своих файлах WSDL. Каждая конечная точка обслуживания имеет собственное пространство имен xml (например, http://fedex.com/ws/rate/v5 и http://fedex.com/ws/ship/v5)
Конечные точки службы используют довольно много одинаковых типов, таких как Адрес, Измерения, Вес, АутентификацияDetail, ClientDetail и т.д.
И вот в чем проблема: я могу одновременно предоставить все файлы WSDL для SvcUtil.exe, и обычно он объединяет любые одинаковые типы в один общий тип, но поскольку каждая из служб FedEx находится в их собственных пространства имен, и они обновляют эти типы в каждом файле WSDL под этим пространством имен, в результате чего я получаю адрес Address, Address1 и Address2 для каждого пространства имен.
Чтобы решить эту проблему, теперь я должен запускать каждый WSDL через svcutil отдельно и помещать их каждый в свое собственное пространство имен .NET(например, FedEx.Rate, FedEx.Ship, FedEx.Track). Проблема заключается в том, что теперь у меня есть отдельный тип адреса в каждом пространстве имен (Fedex.Rate.Address, FedEx.Ship.Address).
Это затрудняет обобщение кода, используемого между службами, например методом GetAuthenticationDetail() factory, поэтому мне не нужно повторять этот код в каждом месте, где я использую разные службы.
Есть ли способ в С# для принудительного использования FedEx.Rate.Address для FedEx.Ship.Address?