2017-07-25 243 views
0

我使用nhibernate將元素從一個對象映射到另一個對象。但是,我的複雜對象中的一個元素需要設置一個條件,以便目標對象元素相應地設置一個值。C#自動映射條件映射

爲了詳細

Mapper.CreateMap<OneObject, AnotherObject>() 
.ForMember( 
    destination => destination.complexelement, 
     option => option.MapFrom(source=> source.value == enumValue.ToString() 
     ? new object({Id 123 }) 
     : new object ({ Id 567 })) 

這樣解釋,你可以看到,我想設置基於源對象的值在目標對象的嵌套對象來創建一個對象,並將其保存到目的地元件。上面的示例代碼我嘗試過,但它拋出一個錯誤,說我不能在lambda表達式上使用字符串。

有誰知道如何根據條件設置對象?

謝謝

+0

什麼'enumValue'?什麼是實際的錯誤文本? – stuartd

+0

emumvalue只是爲了比較。我給你的錯誤信息 – Andy5

回答

0

我認爲這會對你有用。不幸的是它基於AutoMapper 6.1.1。希望你能使用這個版本。因爲我不知道自己的班級結構,所以我創建了簡單的測試班,但您應該能夠將樣本轉移到您的場景中。

OneObject oo = new OneObject(); 
oo.value = "B"; 
Testenum enumValue = Testenum.A; 

Mapper.Initialize(a => a.CreateMap<OneObject, AnotherObject>() 
    .ForMember(
     destination => destination.complexelement, 
     option => option.MapFrom(source => source.value == enumValue.ToString() 
      ? 123 
      : 567))); 

AnotherObject ao = Mapper.Map<OneObject, AnotherObject>(oo); 

測試類和枚舉

class OneObject 
{ 
    public string value { get; set; } 
} 

class AnotherObject 
{ 
    public object complexelement { get; set; } 
} 

enum Testenum 
{ 
    A, 
    B, 
    C 
}