我已开始编写 FedEx 的 Web 服务 API 接口。他们有三个不同的 API 我感兴趣; Rate,Ship 和 Track。我正在使用 SvcUtil.exe 生成服务代理。
不同的服务端点由 FedEx 在其自己的 WSDL 文件中各自指定。每个服务端点都有自己的 XML 命名空间(例如 http://fedex.com/ws/rate/v5 和 http://fedex.com/ws/ship/v5)。
服务端点确实使用了许多相同的类型,例如 Address、Measurements、Weight、AuthenticationDetail、ClientDetail 等等...
问题就在这里,我可以同时提供所有 WSDL 文件给 SvcUtil.exe,并且通常它会将任何相同的类型合并为一个共享类型,但由于 FedEx 的每个服务都在自己的命名空间中,而且它们在该命名空间下的每个 WSDL 文件中重新声明这些类型,所以我最终得到的是一个地址(Address)、一个地址1(Address1)和一个地址2(Address2),每个命名空间都有一个。
为了解决这个问题,现在我会单独运行每个 WSDL 并将它们放在自己的 .NET 命名空间中 (例如 FedEx.Rate、FedEx.Ship、FedEx.Track)。问题是现在每个命名空间都有一个不同的地址类型(Fedex.Rate.Address,FedEx.Ship.Address)。
这使得在服务之间使用代码变得困难,例如 GetAuthenticationDetail() 工厂方法,这样我就不必在使用不同服务的每个地方重复该代码。
不同的服务端点由 FedEx 在其自己的 WSDL 文件中各自指定。每个服务端点都有自己的 XML 命名空间(例如 http://fedex.com/ws/rate/v5 和 http://fedex.com/ws/ship/v5)。
服务端点确实使用了许多相同的类型,例如 Address、Measurements、Weight、AuthenticationDetail、ClientDetail 等等...
问题就在这里,我可以同时提供所有 WSDL 文件给 SvcUtil.exe,并且通常它会将任何相同的类型合并为一个共享类型,但由于 FedEx 的每个服务都在自己的命名空间中,而且它们在该命名空间下的每个 WSDL 文件中重新声明这些类型,所以我最终得到的是一个地址(Address)、一个地址1(Address1)和一个地址2(Address2),每个命名空间都有一个。
为了解决这个问题,现在我会单独运行每个 WSDL 并将它们放在自己的 .NET 命名空间中 (例如 FedEx.Rate、FedEx.Ship、FedEx.Track)。问题是现在每个命名空间都有一个不同的地址类型(Fedex.Rate.Address,FedEx.Ship.Address)。
这使得在服务之间使用代码变得困难,例如 GetAuthenticationDetail() 工厂方法,这样我就不必在使用不同服务的每个地方重复该代码。
在C#中有没有方法将FedEx.Rate.Address强制转换为FedEx.Ship.Address?