2011-01-19 14 views
13

bir mülkün bir özelliğini haritalıyorum Bunun için önerilen bir çözümü bulmayı denemek ve bulmak için AutoMapper belgelerini kullanarak elimden geleni yapıyorum.Bir koleksiyona

ı bu sınıf istemciden doldurulur alır ve Not

public class Note 
{ 
    public string Text { get; set; } 

    // other properties excluded for brevity 
} 
aşağıdaki alanı nesne sınıfının

public class Bar 
{ 
    public IList<Note> Notes { get; set; } 
} 

eşleştirilmiş alır aşağıdaki

public class Foo 
{ 
    public string Note { get; set; } 
} 

gibi bir sınıf var diyelim

üzerinde Note dizesi özelliğini eşlemek istiyorum, Note'un yeni bir örneğindeki ilk Text özelliğine ve BarNotes koleksiyonuna ekleyin. Bu işlemin ilk bölümünü gerçekleştirmek için ValueResolver kullanıyorum (dizeyi Note'un yeni örneğine eşleme) ancak ikinci kısımdan (koleksiyondaki bir öğeye eşleme) nasıl gidileceğinden emin değilim.

Bunu yapmanın en temiz yolu nedir?

cevap

39

I (test edilmemiş - Sadece sesli yazarak) bu çalışması gerekir gibi bir şey düşünüyorum: Ayrıca AutoMappers AfterMap işlevselliğini kullanabilirsiniz

Mapper.CreateMap<Foo, Bar>().ForMember(d => d.Notes, 
    opt => opt.MapFrom(s => new List<Note> { new Note { Text = s.Note } }); 

DÜZENLEME. Automapper düzenli eşleştirmeleri var çıkarmış sonra bu lambda yürütülecek olacaktır:

.AfterMap((s,d) => d.Notes.Add(new Note { Text = s.Note })); 
+0

Bar veri kaynağı doldurulan alanı nesnesidir. Bunun yeni bir etki alanı nesnesi örneğine eşlenmesini sağlayacağını düşünüyorum, ancak etki alanı nesnesinin veri kaynağından doldurulduğu ve koleksiyondaki öğeleri zaten içerebileceği ve bu koleksiyona bir öğe eklemek istediğim durumu ele alacak mıyım? –

+0

Cevabımı, AfterMap'i kullanma seçeneği ile düzenledim. Alternatif olarak, işler çok zorlaşırsa özel bir dönüştürücü kullanabilirsiniz: http://automapper.codeplex.com/wikipage?title=Custom%20Type%20Converters – PatrickSteele

+2

MapAfter bir tedavi çalışması yaptı, bana doğru yönde işaret ettiğin için teşekkürler :) –

İlgili konular