C# Automaper - zagniżdżone mapowanie listy

C# Automaper - zagniżdżone mapowanie listy
K9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 28
0

Witam!
Mam takie przykładowe klasy

Kopiuj
public class klasaA
{
    public string nazwa { get; set; }
    public List<klasaB> listaKlasaB = new List<klasaB>();
}

public class klasaB
{
    public string nazwaB { get; set; }
    public List<klasaC> listaKlasaC = new List<klasaC>();
}

public class klasaC
{
    public string nazwaC { get; set; }
}
Kopiuj
public class klasaA_DTO
{
    public string nazwa { get; set; }
    public List<klasaB> listaKlasaB = new List<klasaB>();
}

W jaki sposób przy użyciu automapera zmapować klasę A na klasaA_DTO zachowując całą zawartość list(listaKlasaB i listaKlasaC)?
Jeśli zrobię to w ten sposób:

Kopiuj
cfg.CreateMap<klasaA, klasaA_DTO>();

to wtedy nie mapuje zawartości listy - listaKlasaC

  • Rejestracja: dni
  • Ostatnio: dni
0

co to jest te cfg ?

K9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 28
0

Konfiguracja automapera

Kopiuj
public static class AutoMapperConfig
    {
        public static IMapper Initialize()
             => new MapperConfiguration(cfg =>
             {

                 cfg.CreateMap<klasaA, klasaA_DTO>();


             })
            .CreateMapper();
    }
somekind
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Wrocław
0

A czemu u Ciebie te listy to zainicjalizowane pola, a nie właściwości?

neves
  • Rejestracja: dni
  • Ostatnio: dni
  • Lokalizacja: Kraków
  • Postów: 1114
1

Kod który wstawiłeś jak najbardziej robi to co chcesz.

Kopiuj
IMapper m = AutoMapperConfig.Initialize();

klasaA a = new klasaA() { listaKlasaB = new List<klasaB>() { new klasaB() { listaKlasaC = new List<klasaC>() { new klasaC() { nazwaC = "C" } }  } } };

var dto= m.Map<klasaA_DTO>(a);
K9
  • Rejestracja: dni
  • Ostatnio: dni
  • Postów: 28
0

Dzięki za pomoc, faktycznie mapowanie działa dobrze, problem był gdzie indziej :)

Zarejestruj się i dołącz do największej społeczności programistów w Polsce.

Otrzymaj wsparcie, dziel się wiedzą i rozwijaj swoje umiejętności z najlepszymi.