Я пытаюсь использовать дочерние контейнеры в StructureMap в тестовом сценарии.У меня есть что-то вроде этого, где IFoo
является зависимостью IFooDependent
, а IFooDependent
настроен в родительском как одиночный.
var mockedIFoo = GetMockedIFoo();
var childContainer = parentContainer.CreateChildContainer();
childContainer.Model.For<IFooDependent>().Default.EjectObject(); // force re-resolution
childContainer.Inject(mockedIFoo);
childContainer.Configure(c => c.For<IFooDependent>().Use<FooDependent>());
Есть другие объекты, которые зависят от IFoo
, но когда я делаю childContainer.GetInstance<IFooDependent>()
, контейнер разрешает IFoo
с регистрацией в родительском контейнере, а не с введенным мной экземпляром.
Я пытался поднять регистрацию в дочернем (путем ручной регистрации некоторыхдругих зависимостей) в предположении, что в реализации цепочки ответственности StructureMap реализация означает, что после разрешения запроса в родительском объекте никакие регистрации в дочернем элементе не будут использоваться для разрешения, но это не кажетсясделать это.