Действительно ли возможно настроить AutoMapper для возврата нового экземпляра целевого типа, если исходный объект является пустым?
Source source = null;
Dest d1 = AutoMapper.Mapper.Map<Source, Dest>(source);
// d1 == null
// I'm looking for a way to configure AutoMapper to
// eliminate this code:
Dest d2 = AutoMapper.Mapper.Map<Source, Dest>(source) ?? new Dest();
Отвечая на свой вопрос (частично):
AutoMapper имеет свойство конфигурации с именем AllowNullDestinationValues
, для которого по умолчанию установлено значение true
. Установив для него значение false
, я получаю поведение, показанное в вопросе, например:
Mapper.Configuration.AllowNullDestinationValues = false;
//...
Source source = null;
Dest d = AutoMapper.Mapper.Map<Source, Dest>(source);
// d is now a new instance of Dest
Это решение работает нормально для простых типов, где типы источника и назначения хорошо отображаются. У меня все еще есть проблемы со сложными сопоставлениями (я обновлю вопрос, чтобы показать пример).