Прагматичное использование AutoMapper с буфером протокола Google 3 - PullRequest
0 голосов
/ 13 февраля 2019

Я хочу использовать AutoMapper с proto3, но самая большая проблема, с которой я сталкиваюсь, заключается в отображении из свойства источника, которое может разрешить null в proto, что никогда не происходит.Делая такое заполнение вручную, нужно сделать что-то вроде этого:

var proto = new Proto();

if (source.Field != null)
{
    proto.Field = source.Field;
}

Я все еще нахожу это абсурдным, но, очевидно, так оно и есть с proto3.

В любом случае, это означает, что отображения должныу них есть условия, чтобы null значения не распространялись на прото:

config
    .CreateMap<Source, Proto>()
    .ForMember(
        x => x.Field,
        options => options.Condition(source => source.Field != null));

Я чувствую, что старею действительно быстро, так как у меня много свойств в моих протосах.

Что мне интересно, есть ли способ для меня справиться с этим на более высоком уровне абстракции?

1 Ответ

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

Вы можете использовать метод ForAllOtherMembers на выходе CreateMap<Source,Proto> и указать условие.Это поможет решить проблему, не указав для каждого свойства

Пример кода

config
    .CreateMap<Source, Proto>()
    .ForAllOtherMembers(
        options => options.Condition((src, dest, srcValue) => srcValue != null));
...