いくつかのクラスのマッピングを設定していますが、シナリオによっては、カスタムマッピングを適用したり、マッピングされない追加のプロパティに値を適用したりする場合があります。このカスタムマッピングを一元的に実行できないのは、コンテキスト依存であるため、変数/プロパティは使用できません。
Mapper.Mapが呼び出された後に特定のプロパティを設定できるように、AutoMapper内にバインドできるイベントはありますか?
いくつかのクラスのマッピングを設定していますが、シナリオによっては、カスタムマッピングを適用したり、マッピングされない追加のプロパティに値を適用したりする場合があります。このカスタムマッピングを一元的に実行できないのは、コンテキスト依存であるため、変数/プロパティは使用できません。
Mapper.Mapが呼び出された後に特定のプロパティを設定できるように、AutoMapper内にバインドできるイベントはありますか?
以下のようにマッピングを作成できます。
Action<object,object> beforeMap = (src, dst) => { Console.WriteLint("BeforeMap"); };
Mapper.CreateMap<Src, Dst>().BeforeMap((src, dst) =>
{
if(beforeMap!=null)
beforeMap(src,dst);
});
Mapper.Map(new Src(), new Dst()); // - output: BeforeMap
また、コンテキスト依存のBeforeMapハンドラーが必要な場合は、いつでも新しいbeforeMapを設定してください。追加のアクションが必要ない場合は、beforeMapをnullに設定するだけです。
beforeMap = (src, dst) => { Console.WriteLint("NEW BeforeMap") };
Mapper.Map(new Src(), new Dst()); // - output: NEW BeforeMap
AfterMapでできることと同じです。