2013-08-08 2 views
10

Automapper를 얼마 동안 사용해 왔으며 매우 잘 작동합니다.Automapper.Mapper에서 목적지 유형 가져 오기

Mapper.CreateMap<Models.MyModel,Entities.MyEntity>(); 

어떤 방법이 있나요, typeof(Entities.MyEntity)를 반환합니다 typeof(Models.MyModel)을 제공하는 방법 나는 다음과 같은 매핑이?

답변

9

Mapper.GetAllTypeMaps() 메소드를 사용하여 등록 된 모든 TypeMap (소스 - 목적지 유형 쌍 및 기타 매핑 관련 정보를 저장하는 자동 매퍼 유형)을 얻을 수 있습니다. 적인 typemap를 사용

당신은 소스 유형을 검색 할 수 있습니다

var typeMap = Mapper.Configuration.ResolveTypemap(
    typeof(Models.MyModel), //source type 
    typeof(Entities.MyEntity) //destination type 
); 
var destinationType = typeMap.DestinationType; 

:

[Test] 
public void Test() 
{ 
    Mapper.CreateMap<Models.MyModel, Entities.MyEntity>(); 
    var destination = Mapper.GetAllTypeMaps() 
          .First(t => t.SourceType == typeof(Models.MyModel)); 
    Assert.AreEqual(typeof (Entities.MyEntity), destination.DestinationType); 
} 
1

허용 대답보다 약간 깨끗 또 다른 해결책은, AutoMapper의 ResolveTypeMap 기능을 사용하는 것입니다 또한 기본 유형을 대상 유형 (여기서는 Entities.MyEntity)으로 전달할 수 있으며 automapper는 파생 유형을 반환합니다.