Прагматичное использование AutoMapper с буфером протокола Google 3

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

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 ответ

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

Образец кода

config
    .CreateMap<Source, Proto>()
    .ForAllOtherMembers(
        options => options.Condition((src, dest, srcValue) => srcValue != null));
Другие вопросы по тегам