首页 > 解决方案 > Castle Windsor 混凝土类型解析和属性注入

问题描述

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

MainViewModel也将IPageViewand 实现为 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 注入一个LiveViewModeltoLiveView属性的实例和一个EditViewModelto的实例EditView

这没有发生。属性为空。

我不喜欢为我的每个视图模型创建特定的新接口只是为了正确注册和解析组件的想法

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

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

标签: castle-windsor

解决方案


像这样注册:

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

推荐阅读