将服务注入AutoMapper目标类

jaf*_*ffa 8 structuremap dependency-injection automapper

假设我有一个使用AutoMapper映射的源和目标类.目标具有注入构造函数的记录器服务.

但是,我不知道如何通过StructureMap将服务注入到构造函数中?

我尝试过以下方法:

Mapper.Initialize(m =>
 {                
    m.ConstructServicesUsing(ObjectFactory.GetInstance);
 });
Run Code Online (Sandbox Code Playgroud)

这并没有阻止我在映射调用上有异常,我猜是因为服务没有正确注入.

我也尝试过以下方法:

CreateMap<Source, Dest>()
 .ConstructUsing(x=> ObjectFactory.GetInstance<ILoggerService>());
Run Code Online (Sandbox Code Playgroud)

但我得到错误:无法将Lamda表达式转换为委托类型,但我见过的所有示例都使用此方法?

Rob*_*ers 5

传递给ConstructUsing的lambda必须返回目标类型的实例.所以在你的情况下,你会想要这样做:

CreateMap<Source, Dest>()  
.ConstructUsing(x=> ObjectFactory.GetInstance<Dest>());
Run Code Online (Sandbox Code Playgroud)

假设您正确设置了StructureMap,它应该创建Dest对象并为您注入ILoggerService.