2010-08-04 60 views
8

如果源對象爲null,是否可以配置AutoMapper以返回目標類型的新實例?AutoMapper:如果source == 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(); 
+0

包裝在一個方法或某事 – Omu 2010-08-05 20:04:03

回答

15

回答我的問題(部分):

AutoMapper有一個名爲AllowNullDestinationValues這是默認設置爲true配置屬性。通過將其設置爲false,我得到的問題顯示的行爲,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 

此解決方案確定爲簡單類型,其中源和目的地類型映射好。我仍然有一些複雜映射的問題(我將更新問題以顯示示例)。

2

您還可以使用.NullSubstitute()來代替NULL值一些自定義值在Automapper任何財產,例如:

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