Типы регистров на основе базового класса
Я пытаюсь понять Виндзор как контейнер МОК. Проблема, с которой я сталкиваюсь сейчас, состоит в том, чтобы зарегистрировать все мои модели просмотра одновременно.
Я посмотрел на документы и подумал, что следующий код должен работать. Однако, когда я проверяю контейнер впоследствии, ничего не регистрируется.
container.Register(Classes.FromThisAssembly()
.BasedOn<ViewModelBase>()
.LifestyleTransient());
гдеViewModelBase
мой базовый класс
Также попробовал следующее:
container.Register(Classes.FromThisAssembly()
.InSameNamespaceAs<MainWindowViewModel>()
.LifestyleTransient());
Необходимые зависимости могут быть разрешены, а видовые модели - нет. Я полагаю, я что-то упускаю здесь очевидное?
редактировать
Мои зависимости зарегистрированы следующим образом:
this.container.Register(Component.For<IDALHandler>().ImplementedBy<DALHandler>());
this.container.Register(Component.For<IBLHandler>().ImplementedBy<BLHandler>());
ОБНОВИТЬ
Так как предложения не сработали, я планировал добавить код из моего базового класса и viewmodel здесь. При этом я заметил, что мой viewmodel-класс былinternal sealed
, При изменении его наpublic sealed
вышеуказанный код работал.
Может кто-нибудь объяснить, почему внутренние классы не могут быть зарегистрированы в контейнере? Я уже тестировал другие контейнеры IOC с точно такой же настройкой, и они не жаловались на это.