Замок Виндзор не может найти инсталляторов в сборках

У меня есть код в моем global.axax:

protected void Application_Start()
{
    WindsorContainer = new WindsorContainer();
    WindsorContainer.Install(FromAssembly.InDirectory(new AssemblyFilter(AppDomain.CurrentDomain.RelativeSearchPath)));
    ControllerBuilder.Current.SetControllerFactory(new WindsorControllerFactory(WindsorContainer.Kernel));
//...
}

Когда я отлаживаю global.asax, код FromAssembly.InDirectory(newAssemblyFilter(AppDomain.CurrentDomain.RelativeSearchPath)) находит все мои dll проекта (есть 7 dll). 3 из них содержит реализацию IWindsorInstaller интерфейс, например:

class WindsorInstaller : IWindsorInstaller
{
    public void Install(IWindsorContainer container, IConfigurationStore store)
    {
        var services = AllTypes.FromThisAssembly().Where(type => type.Name.EndsWith("Service"));
        container.Register(services
            .WithService.DefaultInterfaces()
            .Configure(c => c.LifestyleTransient()));
        container.Register(Component.For<ISession>().ImplementedBy<AspnetSession>().
            LifeStyle.Transient);
        container.Register(Component.For<ICache>().ImplementedBy<AspnetCache>().
            LifeStyle.Transient);
    }
}

Но когда я устанавливаю точки останова, вызывается только 1 установщик, 2 других пропускаются. Забавно, но у меня есть другой рабочий проект, из которого я скопировал код.

2 ответа

Решение

Ваш класс установщика должен быть публичным. Ваш текущий класс установщика не имеет модификатора доступа, поэтому по умолчанию internal - и невидим для Виндзора. Документы Castle указывают это здесь: https://github.com/castleproject/Windsor/blob/master/docs/installers.md.

Проверьте все имена сборок в Project->Right Click->Properties. при использовании type.Name.EndsWith("Service") ваше имя сборки и пространство имен по умолчанию могут не содержать слова (включая проект, из которого вы выполняете. Например, проект WebAPI или проект UnitTest). Вот почему вы не можете получить желаемую сборку.

Другие вопросы по тегам