在MVC5中手动使用ninject进行View访问

时间:2014-11-13 16:58:55

标签: c# asp.net-mvc asp.net-mvc-5 ninject ninject.web.mvc

我在我的Web应用程序上安装了MVC5 ninject NuGet模块,我正在向专业版的控制器中注入依赖项。设置和使用非常简单。我注入的一个抽象是IApplicationSettingsProvider:

public interface IApplicationSettingsProvider
{
    string this[string key]
    {
        get;
    }
}

这很棒,因为我的客户端有一个旧的,实施不佳的“应用程序设置数据库”,他们试图用它来管理他们的自定义软件套件中的应用程序设置。这是一团糟,所以我决定我不会依赖它。

现在,能够从任何控制器访问我的应用程序设置都很棒,但有时我需要从View访问设置。我决定创建一个静态实用程序类,其中包含一些注入的类实例(包括IApplicationSettingsProvider),但我无法弄清楚如何从NinjectWebCommon.cs访问ninject内核!无法访问我的绑定,我不知道如何实例化实用程序类。

public class DependencyUtility {
    private DependencyUtility instance;

    public IApplicationSettingsProvider ApplicationSettingsProvider { get; set; }
    public IAuthenticationProvider AuthenticationProvider { get; set; }
    ...

    private DependencyUtility() {
        ApplicationSettingsProvider = ... ? ninject.Get<IApplicationSettingsProvider> ?
        AuthenticationProvider = ... ? ninject.Get<IAuthenticationProvider > ?
        ...
    }

    public static DependencyUtility GetInstance() {
        if(instance == null) {
            instance = new DependencyUtility();
        }

        return instance;
    }
}

我是以错误的方式来做这件事的吗?我认为View应该能够直接访问应用程序设置之类的东西,而不是将相关设置打包到模型和视图中(然后必须将其传递给部分)。访问应用程序设置的最佳方式是通过抽象的注入界面?

有没有人知道如何使用MVC5中的ninject内核进行手动注入?或者是否有更好的解决方案将应用程序设置提供给任何视图/部分?

0 个答案:

没有答案