Aynı Kaynak türüne, ancak farklı Hedef türlerine sahip haritalar için AutoMapper (v2.2) öğesinde miras eşleştirmesi kullanabilir miyim? Ben yeniden kullanmak istediğinizAutoMapper - kalıtım eşlemesi çalışmıyor, aynı kaynak, çoklu hedefler
public class Entity
{
public int Property1 { get; set; }
public int Property2 { get; set; }
public int Property3 { get; set; }
}
:
public abstract class BaseViewModel
{
public int CommonProperty { get; set;}
}
public class ViewModelA : BaseViewModel
{
public int PropertyA { get; set; }
}
public class ViewModelB : BaseViewModel
{
public int PropertyB { get; set; }
}
ViewModelA
ve ViewModelB
aynı Varlık sınıfın farklı gösterimleri şunlardır:
BaseViewModel
için aynı eşleştirmeler, örneğin:
Fakat maalesef bu işe yaramıyor. Bu gibi Aramalar:
var model = Mapper.Map<Entity, ViewModelA>(entity);
sonuç model
yılında PropertyA
eşlenen değil CommonProperty
sahip. https://github.com/AutoMapper/AutoMapper/wiki/Mapping-inheritance'daki örnekleri düzgün takip ettiğime inanıyorum, ama aynı Kaynak türü ile oluşturulmuş birden fazla haritanın AutoMapper'ı açmasından korkuyorum.
Herhangi bir anlayış? Base class mappings'i bir araya getirme fikrini çok seviyorum ama bu işe yaramıyor.
Bu sorunun gelecekteki okuyucuları için - sorulan sorudan bu yana AutoMapper'ın bu sorunu çözdüğü anlaşılıyor. –
Burada aynı şeyi yapmaya çalışıyorum, ancak yapmaya çalışıyorum: 'var model = Mapper.Map (varlık)' ancak ViewModelA örneğini döndürmek değil, bir BaseViewModel örneği, bir BaseViewModel türü döndürmek için Harita işlevini anlattığımı düşündüm. Automapper 3.0 kullanıyorum, bu yüzden 2.2'deki orijinal hata çözülmüş gibi görünüyor. –
njkremer
Bu SO gönderi, sorunumda bana yardımcı oldu ve çalışmak için istenen etkiyi elde etti. Kod yeniden kullanımı için http://stackoverflow.com/questions/27317719/automapper-how-to-not-repeat-mapping-config-from-complex-type-to-base-class – njkremer