使用Ninject 2.2,有没有办法可选择注入属性?在库中,我注入了一个性能管理器,如下所示:
[Inject]
public IPerformanceManager PerformanceManager
{
private get; set;
}
Run Code Online (Sandbox Code Playgroud)
但是在这个库的许多用途中,我对分析性能不感兴趣,所以我希望这个属性为null.如果我根本没有为IPerformanceManager声明绑定,我会收到以下错误:
激活IPerformanceManager时出错没有匹配的绑定可用,并且该类型不可自我绑定.激活路径:5)将依赖关系IPerformanceManager注入到PluginDomainManager类型的属性PerformanceManager中......
好,可以.所以相反,我尝试将它绑定到一个返回NULL的方法:
kernel.Bind<IPerformanceManager>().ToMethod(m => null);
Run Code Online (Sandbox Code Playgroud)
但现在它给出了错误:
使用从IPerformanceManager到方法Provider的绑定激活IPerformanceManager时出错,返回null.激活路径:5)将依赖关系IPerformanceManager注入到PluginDomainManager类型的属性PerformanceManager中......
所以注入的属性永远不能为NULL?我觉得这很令人惊讶.任何想法如何完成可选的注入属性?
您应该能够使用.装饰您的PerformanceManager OptionalAttribute
如果内核无法解析绑定器,这将阻止内核抛出激活异常.它会将您的依赖项设置为null,就像您想要的那样.
| 归档时间: |
|
| 查看次数: |
1184 次 |
| 最近记录: |