Как использовать WindsorInstaller для нескольких сборок для регистрации - PullRequest
2 голосов
/ 05 мая 2011

Я использую Castle Windsor для обработки инъекций Dependency Injection, и до сих пор он работал отлично.

Однако я сейчас пытаюсь расширить свой проект и добавить несколько дополнительных библиотек - сейчас я пытаюсь найти лучший способ использовать Castle.

В настоящее время у меня есть следующие сборки

MyProject.Interfaces (содержит интерфейс IDBContext) MyProject.BusinessLogic (содержит реализацию Castle Windsor) MyProject.DataAccess (содержит реализацию IDBContext)

В настоящее время у меня есть установщик DBContextInstaller, и он просто реализует следующее:

public void Install(IWindsorContainer container, IConfigurationStore store)
{
    container.Register(AllTypes.FromThisAssembly()
                .BasedOn<IDBContext>()
                .WithService
                .DefaultInterface()
                .Configure(reg => reg.LifeStyle.PerWebRequest));
}

Теперь у меня есть новая сборка в этом проекте - давайте назовем ее MyProject.UserService, и у нее будет новая конкретная реализация IDBContext.

Итак, мой вопрос - как я могу изменить свой оператор Container.Register, чтобы он проверял несколько библиотек. ПРИМЕЧАНИЕ. Я ожидаю, что в будущем к этому сценарию будет добавлено все больше и больше библиотек. Я хотел бы, чтобы этот установщик просто нашел все реализации.

ТИА

1 Ответ

4 голосов
/ 05 мая 2011

Вы можете использовать AllTypes.FromAssemblyInDirectory ...

container.Register(AllTypes.FromAssemblyInDirectory(new AssemblyFilter(folderPath)));
...