Да, это можно сделать, но вы должны указать, когда пропустить свойство назначения, используя Condition()
в вашей конфигурации сопоставления.
Вот пример. Рассмотрим следующие классы:
public class Source
{
public string Text { get; set; }
public bool Map { get; set; }
}
public class Destination
{
public string Text { get; set; }
}
Первая карта не будет перезаписывать destination.Text
, но вторая будет.
Mapper.CreateMap<Source, Destination>()
.ForMember(dest => dest.Text, opt => opt.Condition(src => src.Map));
var source = new Source { Text = "Do not map", Map = false };
var destination = new Destination { Text = "Leave me alone" };
Mapper.Map(source, destination);
source.Map = true;
var destination2 = new Destination { Text = "I'll be overwritten" };
Mapper.Map(source, destination2);