城堡温莎混凝土类型解决和财产注入

问题描述 投票:0回答:1

我正在使用WPF。我有几个视图模型实现了一个名为IPageView的接口。

MainViewModel也实施IPageView和2个属性LiveViewEditView

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

这不会发生。属性为null。

我不喜欢为每个viewmodel创建特定的新接口,只是为了正确注册和解析组件。

事实上,我知道我不会有超过一个且只有一个类型为'ILiveView'或'IEditView'的视图模型可供选择,因此我想使用具体实现。

如何配置容器以在MainViewModel中解析我的视图模型?谢谢。

castle-windsor
1个回答
2
投票

像这样注册:

Classes.FromThisAssembly().BasedOn<IPageView>()
    .WithService.Base()
    .WithService.Self();
© www.soinside.com 2019 - 2024. All rights reserved.