Automapper отключить атрибут IgnoreMap один раз - PullRequest
0 голосов
/ 24 февраля 2019

У меня есть свойство в целевом объекте с атрибутом IgnoreMap.

Я хочу отключить только один раз.Я использую Automapper list для отображения списка.

public class TestDto {
    public string Name { get; set; }
    public DateTime UpdateDate { get; set; }

}

public class Test {
    public string Name { get; set; }
    //Normally, I want to ignore this entities all mapping except one method.
    [IgnoreMap]
    public DateTime UpdateDate { get; set; }

}

class Program {
    public void MapMethod(List<TestDto> sourceList)
    {
        var content = new MapperConfigurationExpression();
        content.CreateMap<TestDto,Test>();
        var config = new MapperConfiguration(content);
        var mapper = config.CreateMapper();
        //I do not want to ignore UpdateDate entity in here.
        var destinationList = mapper.Map<List<Test>>(sourceList);
    }
}

1 Ответ

0 голосов
/ 25 февраля 2019

Вы можете попробовать это:

_mapper.Map<DestType>(result, options => options.AfterMap((s, d) => ((DestType) d).Code = null));

Полный пример

void Main()
{
    IConfigurationProvider conf = new MapperConfiguration(exp => exp.CreateMap<Src, Dest>());
    IMapper mapper = new Mapper(conf);

    var src = new Src(){
       Id =1,
       Name= "John Doe"
    };

    var result = mapper.Map<Dest>(src, options => options.AfterMap((s, d) => ((Dest) d).Name = null));
    result.Dump();

    var result2 = mapper.Map<List<Dest>>(srcList, options => options.AfterMap((s, d) => ((List<Dest>) d).ForEach(i => i.Name = null)));
    result2.Dump();

}

public class Src 
{
    public int Id {get; set;}
    public string Name {get; set;}
}

public class Dest
{
    public int Id {get; set;}
    public string Name {get; set;}
}

enter image description here


В качестве альтернативы

void ConfigureMap(IMappingOperationOptions<Src, Dest> opt)
{
    opt.ConfigureMap()
        .ForMember(dest => dest.Name, m => m.Ignore());
};

 var result3 = mapper.Map<List<Dest>>(srcList, ConfigureMap());
 result3.Dump();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...