2010-08-04 3 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

이 방법 또는 뭔가를 포장 Automapper의 재산, 예컨대 : 대한 일부 사용자 지정 값으로 NULL 값을 대체 할 .NullSubstitute()을 사용할 수 있습니다 – Omu

답변

15

응답 내 자신의 질문 (부분적으로) :

AutoMapper 기본적으로 true로 설정되어 AllowNullDestinationValues라는 이름의 구성 속성이 있습니다.

Mapper.Configuration.AllowNullDestinationValues = false; 

//... 

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

이 솔루션은 소스 및 대상 유형을 잘지도 간단한 유형에 대한 확인을 작동합니다 false이 설정, 나는 질문에 표시된 행동, 예컨대을 얻을. 복잡한 매핑을 사용할 때 여전히 문제가 있습니다 (예를 보여주기 위해 질문을 업데이트합니다).

2

또한

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