2010-02-15 22 views
7

有沒有辦法讓Automapper一個複雜的源圖像地圖:Automapper能否將複雜的源圖映射到目標屬性中沒有前綴並且沒有自定義映射的平坦目標?

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; } 
} 

到平目的地,看起來像:

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

我知道這樣的事情會爲一個目標工作:

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

不過,我正在尋找一種方式來映射到目標,而不需要在目標屬性前綴(爲孩子CLAS只要源的子類屬性中的名稱與目標屬性名稱匹配,就可以使用源代碼。有沒有辦法告訴Automapper將源代碼的子類中的屬性投影到平坦的目標類而不映射每個單獨的成員?

+0

對於ValueInjecter來說這是一件容易的事情,因爲你可以用它來做任何的映射算法http://valueinjecter.codeplex.com/documentation – Omu

+0

多年來這種情況是否發生了變化?能夠做這樣的事情會很棒: CreateMap ().ForSourceMember(s => s.Sub,o => o.FromBase ()) –

回答

1

不,這不是現在支持的方案。我們研究了一段時間,但發現命名衝突率對於我們的應用來說過高,並且將名稱展開保留了該值的來源的完整上下文。

+0

@Jimmy:謝謝回答。首先,讓我說我們喜歡AutoMapper。感謝您的貢獻。 將功能添加到V2以支持映射不同前綴的選項比將子類命名爲扁平對象更好。此外,也許可以選擇打開/關閉我想要爲單個地圖執行的操作。只是一個請求,我知道你的隊列中還有很多其他的請求,這個請求可能會衝突或者太困難。 –

+0

我也想要一種方法來做到這一點。 – Schneider

相關問題