2012-06-29 4 views
15

1つの抽象基底クラスから継承する2つのクラス(MVCビューモデル)があります。実装の基本クラスと異なる設定オプションを持つAutomapper

abstract class BaseModel { } 

class Car : BaseModel 
{ 
    public string Speed { get; set; } 
} 

class Camper : BaseModel 
{ 
    public int Beds { get; set; } 
} 

と基底クラスでAutoMapperを設定する、のようなもの:

ここ
Mapper.CreateMap<BaseModel, DataDestination>(); 

var someObj = new DataDastination(); 
Mapper.Map(instanceOfBaseModel, someObj); 

Automapperは車やキャンピングカーの構成を持っていないので、私は、エラーを取得します。 Automapperを次のように設定しようとしました:

Mapper.CreateMap<BaseModel, DataDestination>() 
    .ForMember(dest => dest.SomeProp, mapper => mapper.MapFrom(....)); 

MapFromでは、私は基本クラスのプロパティしか表示しません! BaseClassを使用するためのAutomapperと、CarとCamperのための特定のForMember式の設定方法たとえば、それがCarの場合は、このプロパティをthisからマップし、Camperの場合は、このプロパティを他の場所からマップします。

答えて

25

Mapping Inheritanceを説明するトピックです。

次はあなたのために働く必要があります。

Mapper.CreateMap<BaseModel, DataDastination>() 
    .Include<Car, DataDastination>() 
    .Include<Camper, DataDastination>();//.ForMember(general mapping) 
Mapper.CreateMap<Car, DataDastination>();//.ForMember(some specific mapping) 
Mapper.CreateMap<Camper, DataDastination>();//.ForMember(some specific mapping) 
+0

似たような状況のために働いていないが[AutoMapper 5にApplicationUserへのViewModelからマップすることはできません。](http://stackoverflow.com/questions/39541588/cannotに説明しました-map-from-viewmodel-to-applicationuser-in-automapper-5?noredirect = 1#comment66397101_39541588)。何か案が? –

関連する問題