2010-02-15 7 views
7

Karmaşık bir kaynak grafiği eşlemek için Automapper'ı elde etmenin bir yolu var mı:Automapper, hedef özelliklerde önek ve özel eşleştirmeler olmadan karmaşık bir kaynak grafiği düz bir hedefe eşleyebilir mi?

public class Source { 
    public string Name { get; set; } 
    public SourceSub Sub { get; set; } 
} 

public class SourceSub { 
    public string ValA { get; set; } 
    public string ValB { get; set; } 
} 

benzeyen düz bir hedefe:

public class Dest { 
    public string Name { get; set; } 
    public string ValA { get; set; } 
    public string ValB { get; set; } 
} 

Bunun gibi bir şey biliyorum bir hedef için çalışacaktır:

public class Dest { 
    public string Name { get; set; } 
    public string SubValA { get; set; } 
    public string SubValB { get; set; } 
} 

Ancak, kaynak özelliklerin alt sınıf özelliklerinde adları olduğu sürece hedef özelliklerde bir önek (kaynakta alt sınıf için) gerektirmeden, hedefle eşlemenin bir yolunu arıyorum. hedef özellik adları. Automapper'a, kaynağın alt sınıfındaki mülkleri, her bir üyeyi eşleştirmeden, düz bir hedef sınıfa yansıtması için bir yol var mı?

+0

ValueInjecter için bu kolay bir iş, cuz ile http://valueinjecter.codeplex.com/documentation – Omu

+0

hayal edebileceğiniz herhangi bir haritalama algoritması ile yapabilirsiniz. Böyle bir şey yapabilmek harika olurdu: CreateMap (). ForSourceMember (s => s.Sub, o => o.FromBase ()) –

cevap

1

Hayır, şu anda desteklenen bir senaryo değil. Bir süreliğine baktık, ancak uygulamalarımız için adlandırma çarpışma oranını çok yüksek buldu ve adının düzleştirilmiş olması, bu değerin nereden geldiği konusunda tam bağlamı korudu.

+0

@Jimmy: Cevabın için teşekkür ederim. Önce, AutoMapper'ı sevdiğimizi söyleyeyim. Katkınız için teşekkürler. V2'ye, farklı öneklerin, alt sınıfın düzleştirilmiş nesneye adlandırılmasından daha farklı bir haritaya sahip olması için bir özelliği desteklemek için bir özellik eklemek hoş olurdu. Ayrıca, belki de tek tek haritalar için yapmaya çalıştığım şeyi açma/kapatma seçeneği. Sadece bir istek, kuyruğunuzda başka birçok istek olduğunu biliyorum ve bu bir çatışma veya çok zor olabilir. –

+0

Bunu yapmanın bir yolunu da istiyorum. – Schneider

İlgili konular