Замок Виндзор - один класс, реализующий несколько интерфейсов

1

Я регистрирую свои два интерфейса при запуске приложения так: -

container.Register(Component.For(typeof(IEntityIndexController)).ImplementedBy(typeof(SnippetController)).LifeStyle.Transient);
container.Register(Component.For(typeof(ISnippetController)).ImplementedBy(typeof(SnippetController)).LifeStyle.Transient);

Затем, когда я пытаюсь запустить IoC.Resolve на объекте, который использует второй интерфейс здесь (ISnippetController), он выдает следующее исключение: -

Невозможно создать компонент "MyApp.Admin.Presenters.SnippetPresenter", так как он имеет зависимости, удовлетворяемые. MyApp.Admin.Presenters.SnippetPresenter ожидает следующих зависимостей: Сервисы: - MyApp.Admin.Controllers.ISnippetController, который не был зарегистрирован.

Если я переключу порядок регистрации, он жалуется, что не может найти IEntityIndexController. Таким образом, похоже, что он только подбирает первую регистрацию класса, тогда любые другие интерфейсы, которые сопоставляются с тем же конкретным классом, игнорируются.

Есть ли что-то очевидное здесь, что мне не хватает? (p.s. im using.net 3.5, windsor RC3)

Теги:
castle-windsor
ioc-container

2 ответа

4
Лучший ответ

Вы пробовали зарегистрироваться с другим синтаксисом (AddComponent<>)?

Попробуйте обновить версию последней версии и посмотрите, помогает ли она. Похож на меня. Если этого не произойдет, создайте тест, который показывает ошибку, и отправьте его здесь

2

Обновлен до последней строки (1015) и используется перенаправленные типы, которые исправили проблему.: -)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню