2010-12-14 19 views
10

Usando Automapper, ¿cómo maneja la asignación de un valor de propiedad en un objeto a una instancia de una cadena. Básicamente tengo una lista de objetos Role y quiero usar Automapper para mapear el contenido de cada propiedad de "nombre" a la lista de cadenas correspondiente (así que acabo con una lista de cadenas). Estoy seguro de que tiene una respuesta obvia, pero no puedo encontrar la asignación que necesito agregar a "CreateMap" para que funcione.Automapper: Asignación de un valor de propiedad de un objeto a una cadena

Un ejemplo del código en cuestión se muestra a continuación:

public class Role 
{ 
    public Guid Id{get;set;} 
    public string Name{get;set;} 
    ... 
    ... 
} 

// What goes in here? 
Mapper.CreateMap<Role, string>().ForMember(....); 

var allRoles = Mapper.Map<IList<Role>, IList<string>>(roles); 

Respuesta

21

Me encanta AutoMapper (y lo uso en una serie de proyectos), pero ¿no sería más fácil con una declaración de LINQ simple?

var allRoles = from r in roles select r.Name 

La forma AutoMapper para lograrlo:

Mapper.CreateMap<Role, String>().ConvertUsing(r => r.Name); 
+0

En este caso probablemente tiene usted razón y sería encajar con nuestra infraestructura, pero aún así estaría interesado en saber si/cómo podría hacerse con Automapper. –

+1

Lo sentimos, debería haber respondido a su pregunta original. :) Esto debería funcionar: Mapper.CreateMap (). ConvertUsing (r => r.Name); – PatrickSteele

+0

Gracias por proporcionarme la manera de hacerlo de Automapper, funciona exactamente como esperaba. –

Cuestiones relacionadas