Разбрасывание бетонного замка Castle Windsor и внесение свойств - PullRequest
0 голосов
/ 13 сентября 2018

Я работаю с WPF. У меня есть несколько моделей просмотра , реализующих интерфейс с именем IPageView.

MainViewModel также реализует IPageView и как 2 свойства LiveView и EditView.

public MainViewModel : IPageView
{
    public LiveViewModel LiveView{ get; set; }
    public EditViewModel EditView{ get; set; }
}

Я регистрирую компоненты, реализующие IPageView, например:

Classes.FromThisAssembly().BasedOn<IPageView>().WithServiceBase();

И я разрешаю все IPageView экземпляры, подобные этому:

_container.ResolveAll<IPageView>();

Я бы ожидал, что CastleWindsor внедрит экземпляр свойства LiveViewModel в LiveView и экземпляр EditViewModel в EditView.

Этого не происходит. Свойства нулевые.

Мне не нравится идея создавать конкретные новые интерфейсы для каждого из моих viewmodel просто для правильной регистрации и разрешения компонентов.

На самом деле, я знаю, что у меня никогда не будет более одного и только одного viewmodel типа 'ILiveView' или 'IEditView', поэтому я хочу использовать бетон реализации .

Как настроить контейнер для разрешения моделей моего вида в MainViewModel? Спасибо.

1 Ответ

0 голосов
/ 14 сентября 2018

Зарегистрируйтесь как это:

Classes.FromThisAssembly().BasedOn<IPageView>()
    .WithService.Base()
    .WithService.Self();
...