所以这就是问题所在:我编写了一个应用程序来调用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,只需要最少的附加代码)。是否有任何通用的解决方案,以便可以来回转换相同的复杂类型(但在不同的命名空间中)?
答案 0 :(得分:1)
Automapper擅长这种事情。当从一种类型复制到另一种类型时,它通常会做出“明智”的事情,当它没有做出明智的事情时(或者需要一些荒谬的东西),你可以将它挂钩并定义应该发生的事情。
答案 1 :(得分:0)
您可以定义自定义implicit强制转换运算符,以便在类似的raterequest和shiprequest类之间进行转换。