Мое настоящее понимание регистрации Castle Windsor заключается в том, что можно только подтвердить регистрацию, вызвав Resolve на корневой компонент. Но поскольку модель компонента Windsor знает зависимости каждого компонента, должно быть возможно проверить, что все зависимости могут быть выполнены без фактического создания каких-либо объектов. Основная причина для этого - иметь unit test для регистрации, которая не требует, чтобы я заглушил компоненты, которые вызывают внешние ресурсы при запуске.
Например. У меня есть класс Root, который имеет зависимость от IChild:
public class Root : IRoot
{
private IChild child;
public Root(IChild child)
{
this.child = child;
}
}
Если я зарегистрирую Root как IRoot, но не регистрирую IChild. Когда я вызываю так:
var container = new WindsorContainer().Register(
Component.For<IRoot>().ImplementedBy<Root>()
);
container.Resolve<IRoot>();
Я получаю сообщение об ошибке:
MyNamespace.Root is waiting for the following dependencies:
Services:
- MyNamespace.IChild which was not registered.
Есть ли что-то вроде:
container.TestResolve<IRoot>();
Это будет ходить по графику зависимостей и проверять, что все зависимости могут быть удовлетворены, но который на самом деле не создает каких-либо экземпляров?