AutoMapper: create instance of destination type if source == null

淺唱寂寞╮ 提交于 2019-12-05 16:10:50

问题


Is it possible to configure AutoMapper to return a new instance of the destination type if the source object is null?

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();

回答1:


Answering my own question (partially):

AutoMapper has a configuration property named AllowNullDestinationValues which is set to true by default. By setting this to false, I get the behavior shown in the question, e.g:

Mapper.Configuration.AllowNullDestinationValues = false;

//...

Source source = null;
Dest d = AutoMapper.Mapper.Map<Source, Dest>(source);
// d is now a new instance of Dest

This solution works OK for simple types, where source and destination types map well. I still have some issues with complex mappings (I will update the question to show an example).




回答2:


You can also use .NullSubstitute() to replace NULL value to some custom value for any property in Automapper, e.g.:

CreateMap<SMModel, VM_SMModel>()
                    .ForMember(d => d.myDate, o => o.NullSubstitute(new DateTime(2017,12,12)));


来源:https://stackoverflow.com/questions/3407838/automapper-create-instance-of-destination-type-if-source-null

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!