2011-05-09 6 views
7

AutoMapper를 사용하여 매핑되는 소스 및 대상 클래스가 있다고 가정 해보십시오. 대상에 생성자에 주입 된 로거 서비스가 있습니다.AutoMapper 대상 클래스에 서비스를 입력하십시오.

그러나 StructMap을 통해 생성자에 서비스를 주입하는 방법을 모르겠습니다. 서비스가 제대로 주입되지 않기 때문에 매핑 호출에 예외를 가지고 나를 방해하지 않았다

Mapper.Initialize(m => 
{     
    m.ConstructServicesUsing(ObjectFactory.GetInstance); 
}); 

, 나는 추측 :

나는 다음과 같은 시도했습니다.

는 또한 시도 다음

CreateMap<Source, Dest>() 
.ConstructUsing(x=> ObjectFactory.GetInstance<ILoggerService>()); 

하지만 오류를 얻을 : 유형을 위임 할 람다 식을 변환 할 수 없습니다, 아직 모든 예제는 내가 사용하는이 방법을 본 적 있어요?

답변

5

ConstructUsing에 전달하는 lambda는 대상 유형의 인스턴스를 반환해야합니다. 따라서 귀하의 경우, 당신은이 작업을 수행 할 것입니다 :

CreateMap<Source, Dest>() 
.ConstructUsing(x=> ObjectFactory.GetInstance<Dest>()); 

을 올바르게 StructureMap 설정을 가정하면, 그것은 신지 객체를 생성하고 당신을 위해 ILoggerService를 주입해야한다.

+0

을! 감사. – jaffa

4

또한이 작업을 수행 할 수 있습니다 우수한

 Mapper.Configuration.ConstructServicesUsing(container.Resolve); 

     Mapper.CreateMap<Source, Dest>().ConstructUsingServiceLocator(); 
+0

관심 없기 때문에, 공장을 통과하는 대신 객체가 방금 해결 되었기 때문에 선택한 답변보다 빠릅니까? – Worthy7

관련 문제