2010-08-04 12 views
8

Kaynak nesne boşsa AutoMapper'ın yeni bir hedef türünü döndürmesi mümkün mü?AutoMapper: source == null ise hedef türün örneklerini oluştur

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

bir yöntem falan sar Automapper herhangi mülk, ör .: için bazı özel değerine NULL değeri yerine .NullSubstitute() kullanabilirsiniz – Omu

cevap

15

cevaplama kendi soru (kısmen):

AutoMapper varsayılan olarak true olarak ayarlanır AllowNullDestinationValues adında bir yapılandırma özelliği vardır.

Mapper.Configuration.AllowNullDestinationValues = false; 

//... 

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

Bu çözüm, kaynak ve hedef türleri iyi map basit türleri için Tamam çalışır: false bu ayarlayarak, ben söz gösterilen davranışlar, örneğin olsun. Hala karmaşık eşleştirmelerle ilgili bazı sorunlarım var (bir örnek göstermek için soruyu güncelleyeceğim).

2

Ayrıca

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