自动映射器:映射取决于其他属性

本文关键字:映射 其他 属性 取决于 | 更新日期: 2023-09-27 17:55:46

我有两个对象:

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

我想执行以下操作,如果IsLegal为真,则将FullName映射到ArtificialPerson。我该怎么做?
谢谢

自动映射器:映射取决于其他属性

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

        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