2013-01-25 66 views
1

我有两个对象:automapper:映射依赖于其他性质

public class Info 
{ 
    public string ArtificialPerson {get; set;} 
    ... 
} 

public class DtoInfo 
{ 
    public string FullName {get; set;} 
    public bool IsLegal {get; set;} 
} 

我要做到以下几点,如果IsLegal为真,则映射到FullNameArtificialPerson。我怎样才能做到这一点?
感谢

回答

3

你应该设置一些映射配置:

 Mapper.CreateMap<DtoInfo, Info>().ForMember(info => info.ArtificialPerson, configExpr => 
     { 
      configExpr.MapFrom(dtoInfo => dtoInfo.FullName); 
      configExpr.Condition((DtoInfo dtoInfo) => dtoInfo.IsLegal); 
     }); 

     var info1 = Mapper.Map<Info>(new DtoInfo 
     { 
      FullName = "Lemons", 
      IsLegal = true 
     }); 

     Console.WriteLine(info1.ArtificialPerson); // displays "Lemons" 

     var info2 = Mapper.Map<Info>(new DtoInfo 
     { 
      FullName = "Cocaine", 
      IsLegal = false 
     }); 

     Console.WriteLine(info2.ArtificialPerson); // displays null string