如何将Fedex送货请求类型转换(或转换)为C#中的费率请求类型?

时间:2012-06-11 17:55:34

标签: c# fedex

所以这就是问题所在:我编写了一个应用程序来调用Fedex 发货 API,但现在我还需要在发货请求后立即单独生成利率请求。 (原因是我需要一个非帐户费率的数据和指标,但我没有得到第三方货运请求的任何费率)。当我创建费率请求时,我可以为简单的值做这样的事情:

raterequest.RequestedShipment.ServiceType = (rateReference.ServiceType)shiprequest.RequestedShipment.ServiceType;

但我可以使用任何复杂类型执行此操作,例如:

raterequest.RequestedShipment.Shipper = (rateReference.Shipper)shiprequest.RequestedShipment.Shipper;

或者甚至喜欢这样:

raterequest.RequestedShipment.Shipper.Address = (rateReference.Address)shiprequest.RequestedShipment.Shipper.Address;

...因为.Net会抱怨它无法在发货地址类型和费率地址类型之间进行转换(尽管它们是相同的)。我可以一次设置一个“raterequest”参数(即“Address.City”),但这很麻烦,我最终想要做一些更复杂的事情(即使用相同的请求参数调用多个API,只需要最少的附加代码)。是否有任何通用的解决方案,以便可以来回转换相同的复杂类型(但在不同的命名空间中)?

2 个答案:

答案 0 :(得分:1)

Automapper擅长这种事情。当从一种类型复制到另一种类型时,它通常会做出“明智”的事情,当它没有做出明智的事情时(或者需要一些荒谬的东西),你可以将它挂钩并定义应该发生的事情。

答案 1 :(得分:0)

您可以定义自定义implicit强制转换运算符,以便在类似的raterequest和shiprequest类之间进行转换。