Я регистрирую свои два интерфейса при запуске приложения так: -
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)
Вы пробовали зарегистрироваться с другим синтаксисом (AddComponent<>
)?
Попробуйте обновить версию последней версии и посмотрите, помогает ли она. Похож на меня. Если этого не произойдет, создайте тест, который показывает ошибку, и отправьте его здесь
Обновлен до последней строки (1015) и используется перенаправленные типы, которые исправили проблему.: -)