2012-03-16 9 views
14

あなたはAutoMapperにマッピングしているオブジェクトは何のカスタムマッピングを必要としない、今までにこれを行うことでポイントがあると仮定:AutoMapper - DynamicMapでマップを使用する理由

Mapper.CreateMap<Src, Dest>(); 
// .... 
Mapper.Map(SrcObject, DestObj); 

一切のカスタムマッピングが必要とされていない場合は、上記のアプローチはちょうど上で、あなたは何を得るん以前の設定を必要とせずにDynamicMapを使用できますか?

Mapper.DynamicMap(SrcObject, DestObj); 

あなたは匿名型をマッピングしているが、私はDyanmicMapがこれまでになしカスタムマッピングを必要としない静的なタイプのためが好まれていないかどうかについて尋ねていたとき、私はDynamicMap必要であることを理解してください。

Mapを使用するためには、あなたがCreateMapを介して第一明示的にそれらのマップを指定する必要があります。私は最後Automapperを使用しますが、私の記憶が正しければ以降

答えて

16

はしばらくして。その後、AssertConfigurationIsValidを呼び出して設定を検証できます。

これは、実行中にエラーが発生するのではなく、アプリケーションを起動した直後に発生します(マッピングを作成し、起動時に検証することが推奨されます)。

また、一部の種類が1:1と一致しないため、正確なマッピングを指定したい場合は、手動で導入したマップを DynamicMapで使用するかどうかは分かりません。
ちょうどチェックしたところ、DynamicMapはgithubの現在のバージョンアップの既存のマップに戻っています。

DynamicMapは、既にマッピング設定を指定しているため、多くの場合、その場でアサートされる必要はありませんので、Mapメソッドより反射を重視しているため、パフォーマンスの問題です。 Automapperの新しいバージョンがこの点で今でもキャッシュを実行しているかどうかはわかりません。

+0

+1 - ああ、私は 'Mapper.AssertConfigurationIsValid();'があることを知っている? :) –