我可以一起使用命名绑定和未命名绑定吗?

时间:2014-06-10 04:35:49

标签: c# binding ninject

我的情况是一个类需要两个特定注入的实例 - 一个通用,一个更专业(一般也可以是专用的,但不一定)。

我的直觉是做一些事情:

Bind<IAmAThing>().To<AGeneralThing>();
Bind<IAmAThing>().To<ASpecializedThing>().Named("Special");

然后使用像

这样的构造函数
MyClass(IAmAThing generalThing, [Named("Special")]IAmAThing specializedThing) {

但是我不确定这是否会起作用,如果确实如此,它是否能够始终如一地工作,或者是否有另一种方式来实现我的想法。基本上如果我没有命名实例,它可以回退到未命名的实例吗?有没有办法指定这样的默认值?

当然,我可以为这两个实例命名,但当有人认为他们可以要求实例时,这似乎会让人感到痛苦......

1 个答案:

答案 0 :(得分:1)

当您使用命名绑定时,请求也必须具有名称 - 并且它必须是完全匹配。没有一个未命名的绑定没有回落。 你确定,你的设计需要这个吗?如何为接口的消费者注入哪个实例?似乎很复杂,似乎隐藏了一些东西......