2014-12-19 13 views
9

Muszę zmapować do obiektu protected na zajęciach przy użyciu Automapper. W tej klasie udostępniono metodę public, która służy do ustawiania wartości dla właściwości. Ta metoda wymaga parameter. Jak mogę odwzorować wartość tej klasy?Automapper: Mapa do chronionej własności

Destination Klasa:

public class Policy 
    { 
     private Billing _billing; 

     protected Billing Billing 
      { 
       get { return _billing; } 
       set { _billing = value; } 
      } 

     public void SetBilling(Billing billing) 
      { 
       if (billing != null) 
       { 
        Billing = billing; 
       } 
       else 
       { 
        throw new NullReferenceException("Billing can't be null"); 
       } 
      } 
    } 

Oto co mój kod Automapper (pseudo kod) wygląda następująco:

Mapper.CreateMap<PolicyDetail, Policy>() 
      .ForMember(d => d.SetBilling(???), 
          s => s.MapFrom(x => x.Billing)); 

muszę zdać klasę płatności metody SetBilling (billing Billing). Jak mam to zrobic? Czy mogę po prostu ustawić chronioną właściwość Płatności?

+0

Te dwie klasy nie mają zbyt wielu takich samych nazw dla swoich właściwości. Tak więc jedynym sposobem, w jaki mogę używać Automappera, jest użycie .ForMember. –

Odpowiedz

12

także możliwe: powiedzieć AutoMapper rozpoznać członków Zabezpieczony:

Mapper.Initialize(cfg => 
{ 
    // map properties with public or internal getters 
    cfg.ShouldMapProperty = p => p.GetMethod.IsPublic || p.GetMethod.IsAssembly; 
    cfg.CreateMap<Source, Destination>(); 
}); 

Bez dodatkowych AfterMap potrzebne. AutoMapper domyślnie szuka właściwości publicznych, musisz poinformować go na podstawie globalnej lub profilu, aby zrobić coś inaczej (https://github.com/AutoMapper/AutoMapper/wiki/Configuration#configuring-visibility)

+0

Jest to jeden z powodów, dla których SO jest najlepszym zasobem technicznym w Internecie. Gdzie indziej można zadać pytanie i uzyskać odpowiedź od osoby, która napisała oprogramowanie. –

+0

Który jest bardziej wydajny? Korzystasz z AfterMap lub konfiguracji? –

+0

Bardziej wydajne lub bardziej oczywiste? Lubię iść z bardziej semantycznym podejściem. AfterMap jest naprawdę opcją jądrową i jest bardziej podatna na błędy. –

Powiązane problemy