2010-01-08 13 views
5

Es ist möglich mit Automapper eine Konvention einzurichten, so dass Karten nicht manuell erstellt werden müssen, wenn die Entität, der Sie zuordnen, einfach "ViewModel" angehängt hat.Automapper Convention

Als Beispiel möchte ich lieber nicht die folgende Karte zu Setup:

Mapper.CreateMap<Error, ErrorViewModel>(); 

Ich verstehe, wenn Projektion erforderlich ist, dass ich eine benutzerdefinierte Karte erstellen müssten, sondern eine Konvention, die Karten zu erstellen wäre nett.

+0

Als eine Nebenbemerkung, wir haben hin und her auf das Hinzufügen von grundsätzlich Scannen. Selbst mit einer großen Anzahl von Mapping-Definitionen (etwa 4-500) war es für uns einfach nicht schmerzhaft, uns das wirklich anzusehen. –

+0

versuchen Sie die ValueInjecter http://valueinjecter.codeplex.com/documentation, es erfordert keine Erstellung von Karten für jede Kombination von Typ – Omu

+0

Warum werden Sie es nicht einrichten? – gdoron

Antwort

6

Sie müssten Mapper.DynamicMap<TDest>(source) zum Zuordnen verwenden.

Wie Sie im folgenden Beispiel sehen können, werden die übereinstimmenden Eigenschaften automatisch von Quelle zu Ziel zugeordnet.

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

Danke, ich hatte Mapper.DynamicMap nicht gesehen – beckelmw