Castle Windsor: есть ли способ подтвердить регистрацию без вызова разрешения?

Мое текущее понимание регистрации Castle Windsor таково, что можно только проверить регистрацию, вызвав Resolve на корневом компоненте. Но поскольку компонентная модель Windsor знает зависимости каждого компонента, должна быть возможность проверить, что все зависимости могут быть удовлетворены без фактического создания экземпляров. Основная причина, по которой я хочу это сделать, - это наличие модульного теста для регистрации, который не требует от меня заглушки компонентов, вызывающих внешние ресурсы при запуске.

Например. У меня есть класс Root, который зависит от IChild:

public class Root : IRoot
{
    private IChild child;

    public Root(IChild child)
    {
        this.child = child;
    }
}

Если я регистрирую Root как IRoot, но не регистрирую IChild. Когда я вызываю команду resolve следующим образом:

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>();

Это могло бы пройти по графу зависимостей и проверить, что все зависимости могут быть удовлетворены, но что на самом деле ничего не создает?

19
задан MrLore 8 December 2014 в 16:40
поделиться