2012-02-12 11 views
3

私のDTO(宛先)にはブール値の束があります。例えばAutomapper:単一のソース値から複数の宛先値が入力されました

HasThisOption 
HasThatOption 
HasSomeOtherOption 

これらの値は、モデルオブジェクト(ソース)のフィールドのいずれかにいくつかの計算を行うことにより取り込まれています。この計算は少しコストがかかるので、DTO上のすべてのフィールドに対して同じ計算を行うのではなく、計算を1回だけ実行したいと思います。

シンプルなソリューションは、ちょうど私のコントローラから関数を呼び出すことです。..つまり.. PopulateFields(ソース、DEST)

しかし、私は私のマッパーの構成内のすべての宛先フィールドのために無視する呼び出しを持っている必要はありません。 。彼らの約40人がいるので...そしてそれはちょうど乱雑に見え、本当にそうする気が利いません。

この状況で一般的に何をしますか?

答えて

4

送信元と送信先のタイプとの間で、あなたのマッピングを定義するときは、AfterMapを使用することができます。

Mapper.CreateMap<Source, Dest>().AfterMap((source, dest) => 
{ 
    // do your custom computations and assignments here 
}); 

ブールフィールドは、彼らが標準マッピング中とにかく無視されるソースタイプには存在しないとしている場合宛先のデフォルト値。 AfterMapメソッドで変更することができます。

+0

これらは無視されますが、Mapper.AssertConfigurationIsValid()は例外をスローします。私はAfterMapについて知りませんでした.. – NoPyGod

関連する問題