2010-06-07 17 views
5

ben şöyle bir kaynak nesne var bağlıyor:Automapper: onun [Açıklama] bir Enum Harita

private class SourceObject { 
    public Enum1 EnumProp1 { get; set; } 
    public Enum2 EnumProp2 { get; set; } 
} 

çeteleler bir dize temsilini sağlar özel [Description] özniteliği ile dekore edilmiştir, ve bir var uzantısı yöntemi .GetDescription() döndürür. Bu enum özelliklerini bu uzantıyı kullanarak nasıl eşlerim?

Böyle bir nesneye haritasına çalışıyorum:

private class DestinationObject { 
    public string Enum1Description { get; set; } 
    public string Enum2Description { get; set; } 
} 

Özel bir biçimlendirici benim en iyi bahistir düşünüyorum, ama ve belirtmek biçimlendirici nasıl ekleneceğini bilemiyorum hangi aynı zamanda haritalanacak alan.

cevap

7

Argh, aptal an. farkında değil mi böyle ForMember() ve AddFormatter() birleştirmek olabilir:

Mapper.CreateMap<SourceObject, DestinationObject>() 
    .ForMember(x => x.Enum1Desc, opt => opt.MapFrom(x => x.EnumProp1)) 
    .ForMember(x => x.Enum1Desc, opt => opt.AddFormatter<EnumDescriptionFormatter>()) 
    .ForMember(x => x.Enum2Desc, opt => opt.MapFrom(x => x.EnumProp2)) 
    .ForMember(x => x.Enum2Desc, opt => opt.AddFormatter<EnumDescriptionFormatter>()); 

Sorun çözüldü.

+1

Her ikisini de eşlemeniz gerekmedikçe, sadece isimleri aynı bırakmanız ve sadece biçimlendiriciyi eklemeniz önerilir. Bu şekilde daha az konfigürasyon. –

+0

Bu, genellikle, gerçekten iyi bir nedenim olmadıkça, benim aldığım yaklaşımdır. Bu, yaptığım bazı testlerden çıktı ve en zor durumun en az _possible_ olduğundan emin olmak istedim. Teşekkürler! –

+0

Teşekkürler! Aynı sorun vardı, yardımcı oldu. – Darius