如果源对象为空,是否可以将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();
Run Code Online (Sandbox Code Playgroud)
M4N*_*M4N 18
回答我自己的问题(部分):
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
Run Code Online (Sandbox Code Playgroud)
此解决方案适用于简单类型,其中源和目标类型映射良好.我仍然遇到复杂映射的一些问题(我将更新问题以显示示例).
您还可以使用.NullSubstitute()
Automapper 中的任何属性将 NULL 值替换为某个自定义值,例如:
CreateMap<SMModel, VM_SMModel>()
.ForMember(d => d.myDate, o => o.NullSubstitute(new DateTime(2017,12,12)));
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
5424 次 |
最近记录: |