Я пытаюсь игнорировать специфицированный c член для сопоставления, конфигурация приведена ниже:
public class Source1
{
public int Id { get; set; }
}
public class Source2
{
public int Id { get; set; }
}
public class ComplexSource
{
public Source1 Source1 { get; set; }
public Source2 Source2 { get; set; }
}
public class Dest
{
public int Source1Id { get; set; }
public int Source2Id { get; set; }
}
public class TestProfile : Profile
{
public TestProfile()
{
cfg.CreateMap<Source1, Dest>()
.ForMember(dest => dest.Source1Id, opt => opt.Ignore());
cfg.CreateMap<Source2, Dest>();
cfg.CreateMap<ComplexSource, Dest>()
.IncludeMembers(src => src.Source1, src => src.Source2);
}
}
var complexSource = new ComplexSource()
{
Source1 = new Source1()
{
Id = 1,
},
Source2 = new Source2()
{
Id = 1,
}
};
var dest = mapper.Map<ComplexSource, Dest>(complexSource);
Console.WriteLine(dest.Source1Id == 1) // true
Я думаю, это происходит потому, что соглашение о сопоставлении имеет более высокий приоритет, чем конфигурация сопоставления.
По какой-то причине я не буду переименовывать свойство ComplexSouce , чтобы избавиться от соглашения о сопоставлении, в такой ситуации, как я могу игнорировать указанный c член для сопоставления когда соглашение соблюдается?