2013-01-25 64 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