c# – Automapper Custom Resolver – 将Repository注入构造函数
发布时间:2020-12-16 01:38:27 所属栏目:百科 来源:网络整理
导读:我正在尝试为automapper创建一个自定义解析器,它需要访问我的一个数据存储库来检索登录的用户帐户. 这是我到目前为止的代码…… public class FollowingResolver : ValueResolverAudio,bool { readonly IIdentityTasks identityTasks; public FollowingResol
我正在尝试为automapper创建一个自定义解析器,它需要访问我的一个数据存储库来检索登录的用户帐户.
这是我到目前为止的代码…… public class FollowingResolver : ValueResolver<Audio,bool> { readonly IIdentityTasks identityTasks; public FollowingResolver(IIdentityTasks identitTasks) { this.identityTasks = identitTasks; } protected override bool ResolveCore(Audio source) { var user = identityTasks.GetCurrentIdentity(); if (user != null) return user.IsFollowingUser(source.DJAccount); return false; } } 但是我收到此错误: FollowingResolver' does not have a default constructor 我尝试添加一个默认的contrstructor,但我的存储库永远不会被初始化. 这是我的autoampper初始化代码: public static void Configure(IWindsorContainer container) { Mapper.Reset(); Mapper.Initialize(x => { x.AddProfile<AccountProfile>(); x.AddProfile<AudioProfile>(); 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<IValueResolver>() .LifestyleTransient()); } } 和ValueResolver本身: public class DivergencesResolver : ValueResolver<MyClass,int> { private AssessmentService assessmentService; public DivergencesResolver(AssessmentService assessmentService) { this.assessmentService = assessmentService; } protected override int ResolveCore(MyClass c) { return assessmentService.GetAssessmentDivergences(c.AssessmentId).Count(); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |