2010-01-08 19 views
5

Es posible con Automapper configurar una convención para que los mapas no tengan que crearse a mano para las situaciones en las que la entidad con la que se está haciendo el mapeo simplemente diga "ViewModel" anexado.Automapper Convention

Como ejemplo preferiría no tener que configurar el siguiente mapa:

Mapper.CreateMap<Error, ErrorViewModel>(); 

entiendo si se requiere una proyección que iba a necesitar para crear un mapa personalizado, pero tener una convención para crear mapas sería bonito.

+0

Como nota al margen, hemos ido y venido en la adición de escaneo básicamente. Incluso con un gran número de definiciones de mapeo (alrededor de 4-500), no fue suficiente para que realmente lo analicemos. –

+0

prueba el ValueInjecter http://valueinjecter.codeplex.com/documentation, no requiere la creación de mapas para cada combinación de tipo al tipo – Omu

+0

¿Por qué no lo configuras? – gdoron

Respuesta

6

Necesitará usar Mapper.DynamicMap<TDest>(source) para asignar.

Como puede ver en el siguiente ejemplo, mapea automáticamente las propiedades coincidentes desde el origen hasta el destino.

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

Gracias, no había visto Mapper.DynamicMap – beckelmw