При регистрации с использованием Register<TService, TImplementation>
(например, вашего Register<IFoo, DeviceContext>
) всегда используется автоматическое подключение путем анализа конструктора типа.Он не будет возвращаться к предыдущей регистрации для этого типа.
Вы хотите перезаписать автоматическое подключение и ручной провод DeviceContext
, в то же время имея возможность разрешить его несколькими типами.Способ достижения этого заключается в следующем:
var reg = Lifestyle.Scoped.CreateRegistration(
() => new DeviceContext(b.Options), container);
container.AddRegistration<DeviceContext>(reg);
container.AddRegistration<IFoo>(reg);
Здесь вы создаете экземпляр Registration
для DeviceContext
, который позволяет вручную связывать тип с указанием его стиля жизни.Это, однако, не регистрирует его, что можно сделать, вызвав AddRegistration
, указав тип, для которого оно может быть разрешено.