Условное обратное отображение - PullRequest
0 голосов
/ 22 января 2020

У меня есть следующая настройка картографирования

public class InnerDest
{
    public int B { get; set; }
}
public class OuterDest
{
    public int A { get; set; }
    public InnerDest Inner { get; set; }
}
public class FlatSource
{
    public int A { get; set; }
    public int? B { get; set; }
}
CreateMap<InnerDest, FlatSource>(MemberList.Source)
    .ReverseMap();
CreateMap<OuterDest, FlatSource>()
    .IncludeMember(dest => dest.Inner)
    .ReverseMap()
    .ForMember(dest => dest.Inner, opt => opt.Condition(source => source.B.HasValue()));

Идея состоит в том, чтобы сделать свойство Inner необязательным, но оно не работает. Свойство всегда устанавливается независимо от условия. Прямо сейчас я делаю это с AfterMap, но мне интересно, есть ли лучший способ сделать это.

1 Ответ

0 голосов
/ 22 января 2020

Вы можете сбросить ReverseMap. Или сохраните его, если необходимо:

    c.CreateMap<InnerDest, FlatSource>(MemberList.Source).ReverseMap();
    c.CreateMap<OuterDest, FlatSource>()
        .IncludeMembers(s => s.Inner)
        .ReverseMap()
        .ForPath(dest => dest.Inner, opt => opt.Condition(context => context.Source.B.HasValue));

Проверить план выполнения .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...