Asp.net mvc Ninject如何访问内核以创建实例?

Asp.net mvc Ninject如何访问内核以创建实例?,asp.net-mvc,ninject,ninject-2,common-service-locator,Asp.net Mvc,Ninject,Ninject 2,Common Service Locator,我不熟悉使用ninject 2.0的ninject。我的应用程序托管在asp.net mvc中 现在我不知道如何访问在类库中创建的内核 我想我应该在global.aspx中创建内核并加载其中的所有模块。但我如何在整个应用程序中提供它 protected void Application_Start() { RegisterRoutes(RouteTable.Routes); IKernel kernel = new StandardKernel(

我不熟悉使用ninject 2.0的ninject。我的应用程序托管在asp.net mvc中

现在我不知道如何访问在类库中创建的内核

我想我应该在global.aspx中创建内核并加载其中的所有模块。但我如何在整个应用程序中提供它

    protected void Application_Start()
    {
        RegisterRoutes(RouteTable.Routes);

        IKernel kernel = new StandardKernel(new ServiceModule());
    }
上面创建的内核应该去哪里?以及如何访问它?

查找Ninject.Web.Mvc。这将向您展示管理这些事情的默认模式(查看源代码)

您可以按原样使用(大多数人都可以),也可以根据自己的喜好定制


你还用CSL标记了这个。在将Ninject用于服务位置之前,先搜索一下这被视为反模式的原因(默认情况下引用的扩展不会使
内核从
全局
公开-您必须自己添加
公共
属性(但另一方面,WCF集成会)

我现在在需要的地方通过向内核注入mvc扩展来让它工作。但这看起来像是对内核的攻击,因为它太依赖ninject了。而且访问HttpApplication的全局属性也不是很有说服力。你对仅将CSL用于内核有何看法。所以我不想自动注入,我可以从CSL获取内核并进行IOC?我只是在谈论我不想进行构造函数注入的部分。大多数实现都是围绕自动构造函数注入进行的,这很好。[正如你所知道和正在说的那样]你不想做服务定位,句号-任何时候你使用它都会毁掉你所有的好工作。请参阅和,了解不将内核(或特定于9个对象的类)直接提供给你的类的方法。(特别是Func注入)。我希望文档在这方面更加完整。。。