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

时间:2011-10-05 14:20:37

标签: c# .net asp.net asp.net-mvc-3 asp.net-membership

我正在设计一个包含以下图层的应用程序

  • 数据层(具有EF 4.1顶部的通用存储库)
  • 服务层 - 所有业务逻辑都在这里
  • ASP.NET MVC 3网站和ServiceStack.NET Web服务

我正在尝试实施自定义成员资格提供程序以利用我的服务/存储库

我的初期是从提供程序中调用服务层方法,但当然,我不能使用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.)...

}

1 个答案:

答案 0 :(得分:0)

如果您的核心问题是测试并使您的DI工作,那么一个选项是覆盖成员资格位并在外观上创建一个界面。然后,您可以设置单元测试,甚至使用某种类型的IoC容器(DI)库。