如何在自定义成员资格提供程序中实例化服务层类

本文关键字:程序 实例化 服务 自定义 成员 | 更新日期: 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)库。