Прагматичное использование 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));