Как получить дочерний контейнер Structuremap для разрешения транзитивных зависимостей? - PullRequest
0 голосов
/ 06 февраля 2019

Я пытаюсь использовать дочерние контейнеры в 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 реализация означает, что после разрешения запроса в родительском объекте никакие регистрации в дочернем элементе не будут использоваться для разрешения, но это не кажетсясделать это.

...