Это не сработает, потому что в конструкторе DrillConsumer
отсутствует спецификация имени [Named("Drill")]
, но привязка для IDrillMachine
требует этого.
Ваш сценарий может быть разрешен двумя отдельными привязками для Drill
:
Bind<IMachine>().To<Drill>().Named("Drill");
Bind<IDrillMachine>().To<Drill>();
Это немного сложнее, если Drill
должен быть объектом области видимости, как синглтон. Добавление в InSingletonScope()
к обоим привязкам приведет к двум случаям: одиночному для IMachine
("Drill") и одному для IDrillMachine
.
Чтобы решить эту проблему, вы можете добавить уровень косвенности:
Bind<IMachine>().ToMethod(ctx => ctx.Kernel.Get<Drill>()).Named("Drill");
Bind<IDrillMachine>().ToMethod(ctx => ctx.Kernel.Get<Drill>());
Bind<Drill>().ToSelf().InSingletonScope();