C# 在MVC5中手动使用ninject进行视图访问

C# 在MVC5中手动使用ninject进行视图访问,c#,asp.net-mvc,asp.net-mvc-5,ninject,ninject.web.mvc,C#,Asp.net Mvc,Asp.net Mvc 5,Ninject,Ninject.web.mvc,我在我的web应用程序上安装了MVC5 ninject NuGet模块,并且像pro一样将依赖项注入控制器。这是难以置信的容易设置和使用。我的一个注入抽象是IApplicationSettingsProvider: public interface IApplicationSettingsProvider { string this[string key] { get; } } 这很好,因为我的客户机有一个旧的、实现不好的“应用程序设置数据库”,他们试图

我在我的web应用程序上安装了MVC5 ninject NuGet模块,并且像pro一样将依赖项注入控制器。这是难以置信的容易设置和使用。我的一个注入抽象是IApplicationSettingsProvider:

public interface IApplicationSettingsProvider
{
    string this[string key]
    {
        get;
    }
}
这很好,因为我的客户机有一个旧的、实现不好的“应用程序设置数据库”,他们试图用它来管理定制软件套件中的应用程序设置。这是一片混乱,所以我决定不依赖它

现在,能够从任何控制器访问我的应用程序设置非常好,但有时我需要从视图访问设置。我决定创建一个静态实用程序类,其中包含一些注入的类实例(包括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;
    }
}
公共类依赖实用程序{
私有依赖性效用实例;
公共IAApplicationSettingsProvider应用程序SettingsProvider{get;set;}
公共IAAuthenticationProvider AuthenticationProvider{get;set;}
...
私有依赖性实用程序(){
ApplicationSettingsProvider=…?ninject.Get?
AuthenticationProvider=…?ninject.Get?
...
}
公共静态依赖实用程序GetInstance(){
if(实例==null){
实例=新的DependencyUtility();
}
返回实例;
}
}
我走错方向了吗?我认为视图应该能够直接访问应用程序设置之类的内容,而不是将相关设置打包到模型和ViewBag中(然后必须将其传递给partials)。还有什么比通过抽象的注入式界面更好的方式访问应用程序设置


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

如果视图需要访问设置,我通常会将它们放在模型中。别忘了-视图应该只是没有代码的显示模板。我理解视图不应该包含业务逻辑。在我的场景中,我的视图中有一个部分需要知道映像资产服务器的主机域。通常,这些域硬编码为图像源属性,但这需要可配置。我不想给模型增加与手头任务无关的负担,我需要在整个站点了解这一点。我不知道这是否证明可以从局部访问应用程序设置,但对我来说,这样做非常有意义。