2

ここで問題があります。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 は、ship Address タイプと rate Address タイプの間で変換できないと文句を言うからです (それらは同じですが)。「raterequest」パラメーターを一度に 1 つずつ設定できます (つまり、「Address.City」) が、面倒であり、最終的にはもっと洗練された処理を実行したいと考えています (つまり、最小限の追加コードで同じ要求パラメーターを使用して複数の API を呼び出します)。同一の複合型 (ただし名前空間が異なる) を前後に変換できるように、これに対する一般的な解決策はありますか?

4

2 に答える 2

1

Automapperはこの種のことを得意としています。通常、あるタイプから別のタイプにコピーするときは「賢明な」ことを行い、賢明なことをしていない場合(または無意味なことが必要な場合)、それをフックして何が起こるかを定義できます。

于 2012-06-11T18:05:58.207 に答える
0

カスタムの暗黙的なキャスト演算子を定義して、同様の raterequest クラスと shiprequest クラスの間で変換できます。

于 2012-06-11T18:09:46.683 に答える