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