2010-01-08 153 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