假设我有一个使用 AutoMapper 映射的源和目标类。
目的地有一个记录器服务注入(inject)到构造函数中。
但是,我不知道如何通过 StructureMap 将服务注入(inject)到构造函数中?
我尝试了以下方法:
Mapper.Initialize(m =>
{
m.ConstructServicesUsing(ObjectFactory.GetInstance);
});
这并没有阻止我在映射调用中遇到异常,我猜是因为服务没有被正确注入(inject)。
我还尝试了以下方法:
CreateMap<Source, Dest>()
.ConstructUsing(x=> ObjectFactory.GetInstance<ILoggerService>());
但我得到错误:无法将 Lamda 表达式转换为委托(delegate)类型 ,但我见过的所有例子都使用这种方法?
最佳答案
传递给 ConstructUsing 的 lambda 必须返回目标类型的实例。所以在你的情况下,你会想要这样做:
CreateMap<Source, Dest>()
.ConstructUsing(x=> ObjectFactory.GetInstance<Dest>());
假设您正确设置了 StructureMap,它应该创建 Dest 对象并为您注入(inject) ILoggerService。
关于dependency-injection - 将服务注入(inject) AutoMapper 目标类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5938704/