我正在设计一个包含以下图层的应用程序
我正在尝试实施自定义成员资格提供程序以利用我的服务/存储库
我的初期是从提供程序中调用服务层方法,但当然,我不能使用DI(通过Ninject),因为成员资格由框架处理并阻止我使用构造函数注入。
我尝试通过以下方式在提供程序的initialize方法中实例化我的UserService类的实例:
userService = (UserService)Activator.CreateInstance(typeof(UserService));
但鉴于用户服务依赖于Ninject注入的存储库,这不起作用,因为repo永远不会被注入。
我在这里缺少什么?解决这个问题最简单的方法是什么?我应该从一个完全不同的角度来看待这个问题吗?
编辑:这是我要求的用户服务
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.)...
}
答案 0 :(得分:0)
如果您的核心问题是测试并使您的DI工作,那么一个选项是覆盖成员资格位并在外观上创建一个界面。然后,您可以设置单元测试,甚至使用某种类型的IoC容器(DI)库。