1

您好,我在将数据库上下文解析为静态帮助程序类时遇到了一些问题。例如,我的 UserHelper 类,我想在其中进行一些查找以查看用户是否是管理员。现在我通过在我的 Userhelper 中创建一个新的上下文来修复它们,但我想使用通过 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>();
}   
4

1 回答 1

2

这怎么可能?

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

于 2013-06-05T10:37:25.237 回答