2017-07-31 17 views
0

私は、アプリケーションのサービスレイヤーで戻り値の型として使用されるDTOオブジェクトだけでなく、エンティティオブジェクトも持っています。 AutoMapperを使用して、エンティティオブジェクトをDTOオブジェクトにマップしたり、その逆を行ったりしたいと思います。私のタイプの1つは、マッピングを実行するために、いくつかの外部クラスが必要です(つまり、いくつかの文字列プロパティの変換を提供する)。 AutoMapperでこれを行う便利な方法はありますか?AutoMapperでオブジェクトをマッピングする際に外部クラスを使用する方法は?

+0

はい、あなたは依存性の注入を使用することができます。ドキュメントは[こちら](https://github.com/AutoMapper/AutoMapper/wiki/Dependency-injection)です。 –

答えて

0

あなたが正しく理解していれば、この例はあなたがしたいことです。 ソースプロパティに基づいて、AutoMapperは外部変換を宛先プロパティにマッピングします。

Dictionary<int, string> translations = new Dictionary<int, string>(); 
translations.Add(0, "Translation 0"); 
translations.Add(1, "Translation 1"); 
translations.Add(2, "Translation 2"); 

Mapper.Initialize(cfg => 
{ 
    cfg.CreateMap<Class1, Class2>().ForMember(a => a.Translation, b => b.MapFrom(c => translations[c.Id])); 
}); 

Class1 src = new Class1() 
{ 
    Id = 1 
}; 
Class2 dest = Mapper.Map<Class1, Class2>(src); 

シンプルなクラス構造:

public class Class1 
{ 
    public int Id { get; set; } 
} 

public class Class2 
{ 
    public int Id { get; set; } 
    public string Translation { get; set; } 
} 
関連する問題