【问题标题】:When does Ninject's OnActivation get fired?Ninject 的 OnActivation 何时被解雇?
【发布时间】:2011-09-28 22:07:10
【问题描述】:

我确信这是一个愚蠢的问题,因为我假设答案是“当对象被 Ninject 实例化时”......但我想仔细检查......

为了提供更多关于我为什么提出这个问题的背景信息,我有一个实现 NinjectHttpApplication 的 asp mvc 应用程序。但是在 OnApplicationStarted 覆盖中,我需要激活绑定在 Ninject 中的单例实例上的方法。

问题是内核暴露了,但不应该用作服务定位器,所以我可以从中取回对象并调用DoSomeSetup(); 方法,但这似乎失败了。据我所知,NinjectHttpApplication 实例不是 DI 的,因为 Global.asax 文件直接使用它,所以我不能以这种方式将它 DI 到应用程序中。

这给我留下了另一个选择,那就是将 OnActivation(x=>x.DoSomeSetup()); 调用添加到绑定中,但是这个对象只在某些地方使用,所以它不像你第一次加载页面时需要它控制器,所以如果OnActivation 等待第一个实例被创建,它可能暂时不会发生。

希望这不会太令人困惑:)

【问题讨论】:

    标签: ninject


    【解决方案1】:

    是的,您的假设是正确的(或至少大部分正确)。即使不是由 Ninject 创建(例如常量),也会在第一次解析实例时运行激活操作

    对于HttpApplication你可以顺便使用属性注入。

    【讨论】:

    • 您能举个简单的例子,将属性注入到 NinjectHttpApplication 中吗?只是为了确保我理解正确。
    • 添加一个带有setter的公共属性,并为其添加[Inject]属性。
    猜你喜欢
    • 2018-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-16
    • 2013-03-25
    • 2018-11-04
    • 1970-01-01
    相关资源
    最近更新 更多