如何在自定义成员资格提供程序中实例化服务层类
本文关键字:程序 实例化 服务 自定义 成员 | 更新日期: 2023-09-27 18:10:41
我正在设计一个具有以下图层的应用程序
- 数据层(基于EF 4.1的通用存储库)
- 服务层——所有业务逻辑都在这里
- ASP。. NET MVC 3网站和ServiceStack。. NET web服务
我正在尝试实现一个自定义成员资格提供者来利用我的服务/存储库
我最初的想法是从提供者内部调用服务层方法,但是,当然,我不能使用DI(通过Ninject),因为成员关系是由框架处理的,并且阻止了我使用构造函数注入。
我已经尝试在提供程序的initialize方法中实例化UserService类的实例:
userService = (UserService)Activator.CreateInstance(typeof(UserService));
但是考虑到用户服务依赖于由Ninject注入的存储库,这不起作用,因为repo永远不会被注入。
我在这里错过了什么?解决这个问题最简单的方法是什么?我应该从一个完全不同的角度来看这个问题吗?
EDIT:这是我请求的用户服务
public class UserService : IUserService
{
private readonly IUserRepository userRepository;
private readonly IUnitOfWork unitOfWork;
public UserService(IUserRepository userRepository, IUnitOfWork unitOfWork)
{
this.userRepository = userRepository;
this.unitOfWork = unitOfWork;
}
//methods(AddUser, etc.)...
}
如果您的核心问题是测试并使您的DI工作,那么一种选择是facade成员位并在facade之外创建接口。然后,您可以设置单元测试,甚至使用某种类型的IoC容器(DI)库。