2010-01-08 158 views
5

Automapper可能会建立一个约定,以便映射不必手动创建,以便您映射的实体只需添加“ViewModel”。自动映射器会议

作为一个例子,我宁可不要设置如下图:

Mapper.CreateMap<Error, ErrorViewModel>(); 

如果投影需要,我需要创建一个自定义的地图,但有一个约定来创建地图将是我的理解不错。

+0

作为一个方面说明,我们已经来回添加基本上扫描。即使有大量的映射定义(大约4-500),对我们来说真的只是看看它还不够。 – 2010-01-11 13:52:03

+0

尝试ValueInjecter http://valueinjecter.codeplex.com/documentation,它不需要为类型的每种组合创建地图 – Omu 2010-05-05 20:26:48

+0

为什么不安装它? – gdoron 2012-10-28 09:28:46

回答

6

您需要使用Mapper.DynamicMap<TDest>(source)来映射。

正如您在下面的示例中看到的那样,它会自动将匹配属性从源映射到目标。

using AutoMapper; 
using System.Diagnostics; 

class Program 
{ 
    static void Main(string[] args) 
    { 
     var source = new Foo {Value = "Abc"}; 
     var destination = Mapper.DynamicMap<FooViewModel>(source); 

     Debug.Assert(source.Value == destination.Value); 
    } 
} 

public class Foo 
{ 
    public string Value { get; set; } 
} 

public class FooViewModel 
{ 
    public string Value { get; set; } 
} 
+1

谢谢,我没有见过Mapper.DynamicMap – beckelmw 2010-01-09 01:01:49