オートマッパーを使用して、WS からのオブジェクトを平坦化しています。単純化されたモデルは次のようになります。
public abstract class AOrder {
public Product Product {get;set;}
public decimal Amount {get;set;}
//number of other properties
}
public abstract class Product {
//product properties
}
public class RatedProduct : Product {
public int Rate { get;set;}
}
public class MarketOrder : AOrder {
//some specific market order properties
}
オートマッパーを使用して、これを次のように平坦化しようとしています:
public class OrderEntity {
public decimal Amount {get;set;}
public int ProductRate {get;set;}
}
次のマッピングで:
CreateMap<RatedProduct, OrderEntity>();
CreateMap<MarketOrder, OrderEntity>();
上記のマッピングは ProductRate をマッピングしません。 Atm AfterMap を使用しました:
CreateMap<MarketOrder, OrderEntity>()
.AfterMap((s,d) => {
var prod = s.Product as RatedProduct;
if (prod != null)
{
//map fields
}
});
これはかなりうまく機能しますが、オートマッパーの平坦化の可能性 (名前によるマッチング) を再利用できれば、多くの場所でアフター マップを適用する必要はないと考えました。
注: WS を変更することはできません。これは、オブジェクト階層のほんの一部です。
アドバイスをいただければ幸いです。