Замок Виндзор: регистрация нескольких типов - PullRequest
2 голосов
/ 14 мая 2011

Предполагая, что у меня есть несколько классов, которые реализуют интерфейс: IFileDownloader.

Если я регистрирую компонент по отдельности, все в порядке:

kernel.Register(Component.For<IFileDownloader>().ImplementedBy<HttpFileDownloader>());

Однако, если я пытаюсь зарегистрировать все компоненты, которые реализуют этот интерфейс, он, похоже, не регистрирует их:

kernel.Register(AllTypes.FromThisAssembly().BasedOn<IFileDownloader>());

Я, должно быть, упускаю что-то очевидное.

Большое спасибо, Для -Alex-

1 Ответ

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

Может быть две причины, почему ваша регистрация не работает так, как вы ожидали

  1. Ваши классы являются внутренними, и Виндзор их игнорирует.
  2. Вы не указали, чтоВы хотите зарегистрировать их в сервисе IFileDownloader.Я думаю, что вы ищете:

    kernel.Register(AllTypes.FromThisAssembly()
      .BasedOn<IFileDownloader>()
      .WithService.Base());
    
...