在大多数映射场景中,我们在编译时就知道要映射到的类型。在某些情况下,源类型直到运行时才知道,尤其是在我使用动态类型的场景或可扩展性场景中。
DynamicMap 调用为传入指定目标类型的源对象的类型创建配置。如果这两种类型已经被映射,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; }
}
假设您有一个人员列表。
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();