2

I make a mapping using Automapper 3.2.1:

    Mapper.CreateMap<AvvisoPec, EsitiPostalizzazione>()
        .ForMember(dst => dst.IDAvviso, src => src.MapFrom(v => EstraiIdAvviso(v)))
        .ForMember(dst => dst.CodiceErrorePiattaforma, src => src.MapFrom(v => EstraiCodiceErrorePiattaforma(v.History)))
        .ForMember(dst => dst.DescrizioneErrorePiattaforma, src => src.MapFrom(v => EstraiDescrizioneErrorePiattaforma(v.History)))
        .ForMember(dst => dst.CodiceEsitoPostalizzazione, src => src.MapFrom(v => EstraiEsitoPostalizzazione(v.History)))

And this works good. now I want to remove parameterless construction in order to use a better encapsulation::

public EsitiPostalizzazione(int IDAvviso, int CodiceEsitoPostalizzazione, String CodiceErrorePiattaforma, String DescrizioneErrorePiattaforma)
{
    this.IDAvviso = IDAvviso;
    this.CodiceEsitoPostalizzazione = CodiceEsitoPostalizzazione;
    this.CodiceErrorePiattaforma = CodiceErrorePiattaforma;
    this.DescrizioneErrorePiattaforma = DescrizioneErrorePiattaforma;
}

so as far as I documented I should use the ConstructUsingafter the createMap() but I don't know how to use it, can someone help me? All the example on the web will make something like:

Mapper.CreateMap<AvvisoPec, EsitiPostalizzazione>()
      .ConstructUsing(x => new EsitiPostalizzazione(x.IdAvviso, ...))

but I have nothing like x.IDAvviso

Community
  • 1
  • 1
BAD_SEED
  • 4,840
  • 11
  • 53
  • 110

1 Answers1

2

The x in the ConstructUsing lambda should be your source type, which is AvvisoPec. So when you're using the EsitiPostalizzazione constructor you need to provide the values the way you were doing when using the MapFrom syntax.

Based on your code I would expect it to be:

Mapper.CreateMap<AvvisoPec, EsitiPostalizzazione>()
      .ConstructUsing(v => new EsitiPostalizzazione(EstraiIdAvviso(v),
            EstraiEsitoPostalizzazione(v.History),     
            EstraiCodiceErrorePiattaforma(v.History),
            EstraiDescrizioneErrorePiattaforma(v.History)));
Ahmad Mageed
  • 94,561
  • 19
  • 163
  • 174