我的情况是一个类需要两个特定注入的实例 - 一个通用,一个更专业(一般也可以是专用的,但不一定)。
我的直觉是做一些事情:
Bind<IAmAThing>().To<AGeneralThing>();
Bind<IAmAThing>().To<ASpecializedThing>().Named("Special");
然后使用像
这样的构造函数MyClass(IAmAThing generalThing, [Named("Special")]IAmAThing specializedThing) {
但是我不确定这是否会起作用,如果确实如此,它是否能够始终如一地工作,或者是否有另一种方式来实现我的想法。基本上如果我没有命名实例,它可以回退到未命名的实例吗?有没有办法指定这样的默认值?
当然,我可以为这两个实例命名,但当有人认为他们可以要求实例时,这似乎会让人感到痛苦......
答案 0 :(得分:1)
当您使用命名绑定时,请求也必须具有名称 - 并且它必须是完全匹配。没有一个未命名的绑定没有回落。 你确定,你的设计需要这个吗?如何为接口的消费者注入哪个实例?似乎很复杂,似乎隐藏了一些东西......