2013-11-25 227 views
4

讓我們假設我有以下類AutoMapper自定義映射

public class foo 
{ 
    public string Value; 
} 


public class bar 
{ 
    public string Value1; 
    public string Value2; 
} 

現在我想配置自動地圖,繪製值1到值,如果值1以「A」開頭,但除此之外,我想值2映射到值。

這是我到目前爲止有:

Mapper 
    .CreateMap<foo,bar>() 
    .ForMember(t => t.Value, 
     o => 
      { 
       o.Condition(s => 
        s.Value1.StartsWith("A")); 
       o.MapFrom(s => s.Value1); 
        <<***I want to throw Exception here***>> 
      }) 

但是我知道我可以給有條件的基礎上,值1或值2,但不知道如何把一些自定義代碼,調用函數或拋出異常

請指導。

回答

11

你可以傳遞一個lambda來ResolveUsing

.ForMember(f => f.Value, o => o.ResolveUsing(b => 
    { 
     if (b.Value1.StartsWith("A"));) 
     { 
      return b.Value1; 
     } 
     return b.Value2; 
    } 
)); 
+0

我不想給參考記憶,所以我不能用ResolveUsing,有沒有使用同樣的事情MapFrom任何選項? –

+1

「給予記憶的參考」是什麼意思? –

+0

ResolveUsing使用Reference作爲MapFrom使用被映射的屬性的值。 –