2011-09-28 10 views
10

Ho la seguente tipo di origine:Come fare automapper creare un'istanza della classe

public class Source 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 
    public string Address1 { get; set; } 
    public string Address2 { get; set; } 
    public string City { get; set; } 
    public string State { get; set; } 
    public string ZipCode { get; set; } 
} 

ho i seguenti tipi di destinazione:

public class Destination 
{ 
    public string FirstName { get; set; } 
    public string LastName { get; set; } 

    public Address HomeAddress { get; set; } 
} 

public class Address 
{ 
    public string Address1 { get; set; } 
    public string Address2 { get; set; } 
    public string City { get; set; } 
    public string State { get; set; } 
    public string PostalCode { get; set; } 
} 

ho creato una mappatura:

Mapper.CreateMap<Source, Destination>(); 

Come configurare la mia mappatura in modo da creare un'istanza di Indirizzo e mappare la proprietà Address.PostalCode usando t he Proprietà di origine ZipCode?

risposta

9

Con AfterMap, è possibile specificare come mappare le entità dopo che AutoMapper ha eseguito la mappatura.

Mapper.CreateMap<Source, Destination>() 
       .AfterMap((src, dest) => 
           { 
            dest.HomeAddress = new Address {PostalCode = src.ZipCode}; 
           } 
      ); 
+0

Ho provato questo. Non funziona. L'espressione 'dest => Convert (dest.Address.PostalCode)' deve essere risolta nel membro di livello superiore. – Dismissile

+0

Inoltre, non voglio inserire l'inizializzazione nel mio costruttore perché non voglio creare sempre e indirizzare quando istanzio una nuova destinazione, solo quando eseguo la mappatura da una fonte voglio creare un indirizzo. – Dismissile

+0

@Dismissile, non funziona perché si sta risolvendo per 'Convertire (...)' non 'dest.Address.PostalCode'. Inoltre, guardando gli esempi qui: https://github.com/AutoMapper/AutoMapper/wiki/Projection sembra che non sia necessario includere il costruttore vuoto, purché entrambe le classi abbiano costruttori predefiniti. – scottm

Problemi correlati