Я столкнулся с неожиданным результатом при попытке разрешить экземпляр. Это, вероятно, лучше объяснить в коде. Вот реестр, используемый для ObjectFactory.Initialize:
public MyRegistry : Registry {
public MyRegistry() {
this.For<IServiceA>.Use<ServiceA>();
this.For<IServiceA>.Use<SpecialServiceA>().Named("Special");
this.Profile("Special", p => p.For<IServiceA>().Use("Special"));
this.For<IScreen>().Use<NullScreen>();
}
}
В фабричном классе я создаю вложенный контейнер и регистрирую текущий экран в контейнере следующим образом:
public void ProcessScreenRequest(IScreen screen) {
using(IContainer nestedContainer = this._container.GetNestedContainer(screen.Profile)) {
nestedContainer.Configure(x => x.For<IScreen>().Use(screen);
//process chain of commands to display screen.
}
}
В одной из моих команд он имеет зависимость для IScreen, но вместо получения экземпляра "screen", который я настроил для вложенного контейнера, он получает NullScreen.
Что-то я делаю не так или профилированные вложенные контейнеры не поддерживают это scenerio?