2012-09-14 8 views
6

Tengo dos sub clase que necesito copiar un elemento de lista de en un objeto maestroAutoMapper multi objetos a un objeto

public Class Foo1 : Anote 
{ 
    public bool Ison { get; set;} 
    public List<Anote>Anotes { get; private set;} 

    public Foo1() 
    { 
    this.Anotes = new List<Anote>(); 
    } 
} 

public Class Foo2 : Bnote 
{ 
    public bool Ison { get; set;} 
    public List<Bnote>Anotes { get; private set;} 

    public Foo2() 
    { 
    this.Anotes = new List<Bnote>(); 
    } 
} 

public Class Foo3 : Cnote 
{ 
    public bool Ison { get; set;} 
    public List<Cnote>Anotes { get; private set;} 
    public List<Cnote>Bnotes { get; private set; } 

} 

estaré al recuperar datos de una base de datos y poner estos datos en foo1 y Foo2 . Entonces necesito para mapear los datos de la lista de Foo1 y Foo2 en los elementos de la lista en Foo3.

he hecho

Foo1A foo1a = new Foo1A(); 
Foo2A foo2a = new Foo2A(); 

Mapper.CreateMap<Foo1, Foo1A>(); 
Mapper.CreateMap<Foo2, F002A>(); 
Mapper.Map<Foo1, Foo2A>(foo1, foo1a); 
Mapper.Map<Foo2, F002A>(foo2, foo2a); 

y esto funciona, pero lo que hay que hacer es

mapa listado ANotas en foo1 a lista de ANotas en foo3 mapa listado ANotas en Foo2 al listado Bnotes en Foo3.

Respuesta

7

Usted sólo debe ser capaz de hacer:

Mapper.CreateMap<ANote, CNote>(); 

Mapper.CreateMap<Foo1, Foo3>() 
    .ForMember(dest => dest.ANotes, opt => opt.MapFrom(src => src.ANotes)) 
    .ForMember(dest => dest.BNotes, opt => opt.Ignore()); 

Mapper.CreateMap<Foo2, Foo3>() 
    .ForMember(dest => dest.BNotes, opt => opt.MapFrom(src => src.ANotes)) 
    .ForMember(dest => dest.ANotes, opt => opt.Ignore()); 

Foo3 foo3 = new Foo3(); 

Mapper.Map<Foo1, Foo3>(foo, foo3); 
Mapper.Map<Foo2, Foo3>(foo2, foo3); 

foo3.ANotesfoo3.BNotes y debería ambos se han asignado correctamente.

+0

Para cualquier otra persona que tropiece con esto, he estado tratando de usar esta solución para unir dos listas de objetos. No he podido averiguar cómo hacer que funcione. Tuve que usar un foreach y luego mapear cada elemento y agregarlo manualmente a una lista. – Icestorm0141

+0

@ Icestorm0141: ¿Tiene una nueva pregunta abierta? –

+0

En el segundo mapeo de Foo2 a Foo3, es decir, '.ForMember (dest => dest.BNotes, opt => opt.MapFrom (src => src.ANotes))' no debería ser '' src, BNotes' en lugar de ' src.ANotes'? –

Cuestiones relacionadas