2012-09-14 14 views
6

Mam dwa sub klasy, które muszę skopiować element listy Z do obiektu nadrzędnegoautomapper Multi obiektów do jednego obiektu

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; } 

} 

będę retreiving dane z bazy danych i wprowadzenie tych danych do foo1 i foo2 . Następnie potrzebuję , aby zamapować dane listy z Foo1 i Foo2 na elementy listy w Foo3.

Zrobiłem

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); 

i to działa, ale to, co trzeba zrobić, to

mapie listy a Uwagi w foo1 do listy a Uwagi w foo3 mapie listy a Uwagi w foo2 do listy Przypisy w Foo3.

Odpowiedz

7

Trzeba tylko umieć robić:

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.ANotes i foo3.BNotes powinny oba zostały odwzorowane prawidłowo.

+0

Dla każdego, kto się o to potknął, próbowałem użyć tego rozwiązania do scalenia dwóch list obiektów. Nie byłem w stanie wymyślić, jak to osiągnąć. Musiałem użyć foreach, a następnie zmapować każdy przedmiot i ręcznie dodać go do listy. – Icestorm0141

+0

@ Icestorm0141: Czy masz nowe pytanie otwarte? –

+0

W drugim odwzorowaniu Foo2 na Foo3, tj. '.ForMember (dest => dest.BNotes, opt => opt.MapFrom (src => src.ANotes))' nie powinno to być 'src, BNotes' zamiast' src.ANotes'? –

Powiązane problemy