Automapper自定义解析器 – 将存储库注入构造函数
我正在尝试为automapper创建一个自定义解析器,它需要访问我的一个数据存储库来检索登录的用户帐户。
这是我到目前为止的代码……
public class FollowingResolver : ValueResolver
但是我收到此错误:
FollowingResolver' does not have a default constructor
我尝试添加一个默认的contrstructor,但我的存储库永远不会被初始化。
这是我的autoampper初始化代码:
public static void Configure(IWindsorContainer container) { Mapper.Reset(); Mapper.Initialize(x => { x.AddProfile(); x.AddProfile(); x.ConstructServicesUsing(container.Resolve); }); Mapper.AssertConfigurationIsValid(); }
我错过了什么,甚至可以这样做,还是我错过了这里的船?
在尝试注入服务时,使用Castle Windsor时遇到了同样的错误。
我不得不补充:
Mapper.Initialize(map => { map.ConstructServicesUsing(_container.Resolve); });
在Mapper.CreateMap
调用之前。
像这样创建了一个ValueResolverInstaller
:
public class ValueResolverInstaller : IWindsorInstaller { public void Install(IWindsorContainer container, IConfigurationStore store) { container.Register(Classes.FromThisAssembly() .BasedOn() .LifestyleTransient()); } }
和ValueResolver
本身:
public class DivergencesResolver : ValueResolver { private AssessmentService assessmentService; public DivergencesResolver(AssessmentService assessmentService) { this.assessmentService = assessmentService; } protected override int ResolveCore(MyClass c) { return assessmentService.GetAssessmentDivergences(c.AssessmentId).Count(); } }
在…之后找到了解决方案shorlty我忘记将我的解析器添加为IoC容器。
现在工作得很好!