Ninject MVC和静态助手

时间:2013-06-05 10:32:37

标签: asp.net-mvc asp.net-mvc-4 ninject

您好,我在将数据库上下文解析为静态帮助程序类时遇到了一些问题。 举个例子,我的UserHelper类,我想做一些查找,看看用户是否是管理员。 现在我通过在Userhelper中创建一个新的Context来修复它们,但我想使用通过ninject创建的一个实例。这怎么可能?

public static class UserHelper
{
    private static MetropolOpgavebankenEntities _context;
    public static MetropolOpgavebankenEntities Context
    {
        get
        {
            if (_context == null)
                _context =
                    new MetropolOpgavebankenEntities(
                        ConfigurationManager.Instance.Configuration.ConnectionString.Value);
            return _context;
        }
    }

    public static bool IsAdmin()
    {
        if (!HttpContext.Current.User.Identity.IsAuthenticated)
            return false;
        string username = HttpContext.Current.User.Identity.Name;
        if(Context.Administrators.Any(x => x.MetropolId.ToLower() == username.ToLower()))
            return true;
        return false;
    }
}

我的ninject代码

private static void RegisterServices(IKernel kernel)
{
    kernel.Bind<MetropolOpgavebankenEntities>().ToMethod(c => new MetropolOpgavebankenEntities(ConfigurationManager.Instance.Configuration.ConnectionString.Value)).InRequestScope();
    kernel.Bind<OpgavebankService>().To<OpgavebankService>();
}   

1 个答案:

答案 0 :(得分:2)

  

这怎么可能?

您不应该使用静态类。如果你想使用依赖注入并让你的DI框架处理对象的生命周期,你应该将它委托给它。否则,您不再使用依赖注入而是使用服务定位器(它被视为反模式)。