ほとんどのマッピング シナリオでは、コンパイル時にマッピング先の型がわかっています。場合によっては、特に動的な型を使用しているシナリオや拡張性のシナリオでは、ソースの型が実行時までわからないことがあります。
DynamicMap 呼び出しは、指定された宛先タイプに渡されるソース オブジェクトのタイプの構成を作成します。2 つの型が既にマップされている場合、AutoMapper はこの手順をスキップします (この例では DynamicMap を複数回呼び出すことができるため)。
ソース: http://lostechies.com/jimmybogard/2009/04/15/automapper-feature-interfaces-and-dynamic-mapping/
短いバージョン: DynamicMapは、 CreateMapを呼び出してからMapを呼び出すのと同じです。
ダミーの Person クラス
public class Person
{
public string Name { get; set; }
public string Surname { get; set; }
public int Age { get; set; }
}
Persons のリストがあるとします。
var persons = new List<Person>();
for (int i = 0; i < 100; i++)
{
persons.Add(new Person {
Name = String.Format("John {0}", i),
Surname = String.Format("Smith {0}", i),
Age = i });
}
次に、新しいプロパティを追加する人を選択します。
var anonymousTypes = persons.Select(p => new {
p.Name,
p.Surname,
FullName = String.Format("{0}, {1}", p.Surname,p.Name) }).ToList();
最初の人を適切にマッピングするには
var testFile = Mapper.DynamicMap<Person>(anonymousTypes.First());
使用するすべての人を適切にマッピングするには
var testFiles = anonymousTypes.Select(Mapper.DynamicMap<Person>).ToList();