【发布时间】:2011-03-01 06:18:58
【问题描述】:
在 Ninject 2.2 中,有没有办法选择性地注入属性?在一个库中,我正在注入一个性能管理器,如下所示:
[Inject]
public IPerformanceManager PerformanceManager
{
private get; set;
}
但是在这个库的许多用途中,我对性能分析不感兴趣,所以我希望这个属性为空。如果我根本没有为 IPerformanceManager 声明绑定,我会收到以下错误:
激活 IPerformanceManager 时出错 没有匹配的绑定可用, 并且类型不是自绑定的。 激活途径:5)注入 依赖 IPerformanceManager 成 类型的属性 PerformanceManager PluginDomainManager 等...
好的,很公平。因此,我尝试将其绑定到返回 NULL 的方法:
kernel.Bind<IPerformanceManager>().ToMethod(m => null);
但现在它给出了错误:
激活 IPerformanceManager 时出错 使用来自 IPerformanceManager 的绑定 到方法 Provider 返回 null。 激活途径:5)注入 依赖 IPerformanceManager 成 类型的属性 PerformanceManager PluginDomainManager 等...
所以注入的属性永远不能为NULL?我觉得这很令人惊讶。任何想法如何完成一个可选的注入属性?
【问题讨论】: