有没有办法使用 Automapper 在以下条件下将 Src 映射到 Dest: - 如果 Src 的 Num 为空,则 Dest 的 Num 属性应保持不变 - 如果 Src 的 InnerStr 为空,则 Dest 的 Num 属性应保持不变 - 如果 Src 的 InnerStr 不能解析为 int 则 Dest 的 Num 应保持不变 - 如果 Src 的 InnerStr 可以解析为 int 则 Dest 的 Num 的值应设置为该值
对象示例:
public Dest
{
   public int? Num{ get; set; }
}
public Src
{
   public InnerObject Num { get; set; }
}
public InnerObject
{
   public string InnerStr { get; set; }
}
这是我正在尝试的:
Mapper.CreateMap<InnerObject, int?>()
   .ConvertUsing(src => 
             { 
                 int x = 0; 
                 //need help here. I'm not sure how to get the source's value at
                 //this point
                 return (int.TryParse(src.Text, out x)) ? new int?(x) : src'svalue; 
             });
Mapper.CreateMap<Src, Dest>();
... 考试:
Dest myDestObj = new Dest()
   {
      Num = new int?(2);
   };
Src nullSrcObj = null;
Src nullStringObj = new Src()
   {
      Num = null;
   };
Src cantBeParsedObj= new Src()
   {
      Num = "I'm not an int!";
   };
Src mySrcObj = new Src()
   {
      Num = "123";
   };
//Should be 2
Console.WriteLine(myDestObj.Num)
Mapper.Map<Src, Dest>(nullSrcObj, myDestObj);
//Should be 2
Console.WriteLine(myDestObj.Num);
Mapper.Map<Src, Dest>(nullStrObj, myDestObj);
//Should be 2
Console.WriteLine(myDestObj.Num);
Mapper.Map<Src, Dest>(cantBeParsedObj, myDestObj);
//Should be 2
Console.WriteLine(myDestObj.Num);
Mapper.Map<Src, Dest>(mySrcObj, myDestObj);
//Should be 123
Console.WriteLine(myDestObj.Num);