2016-03-01 16 views
0

如果基礎配置文件已經加載,看起來像有用的AutoMapper-Profile屬性IncludeBase只能工作。這裏有一個理論的例子:AutoMapper:IncludeBase僅在加載基礎配置文件時起作用

 CreateMap<BusinessObject, MainObject>() 
     // Emitted 

     CreateMap<BusinessObject, Child1>() 
     .IncludeBase<BusinessObject, MainObject>() 
     // Emitted, more properties 

這一個會像預期的那樣工作,Child1獲取所有映射的MainObject屬性。 現在,另一邊角落找尋,這不起作用:

 CreateMap<BusinessObject, Child1>() 
     .IncludeBase<BusinessObject, MainObject>() 
     // Emitted, more properties 

     CreateMap<BusinessObject, MainObject>() 
     // Emitted 

只有在的child1直接定義的屬性配置文件中看到正確映射。

我用於AutoMapper的所有用法都包括通過反射動態加載配置文件。這種行爲顯然會停止,因爲我不能確定,配置文件加載的順序。這是真的打算還是我在這裏使用錯誤?

回答

1

你剛剛達到了將AutoMapper移動到基於實例和只讀配置的原因。你碰到這樣的錯誤。在AutoMapper 5.0中,所有這些都是固定的,因爲我將配置移到了兩個步驟的過程中,收集所有配置,然後按正確的順序應用它。

這是一個bug,在5.0中修復。

+0

感謝您的驗證,沒有什麼比未知更糟糕 –