温莎城堡解析匹配的通用类型

时间:2019-06-17 15:06:18

标签: castle-windsor

这是我面临的问题的简化版本。

比方说,我的应用程序包含许多“汽车”实现。每辆汽车都有一个用于编辑汽车详细信息的相应视图模型,如下所示:

public class Ford : ICar
{
}

public interface IEditorVm<TCar>
    where TCar : ICar
{
}

public class FordEditor : IEditorVm<Ford>
{
}

假设我正在像这样使用温莎城堡注册所有课程:

container.Register(
    Classes.FromThisAssembly()
    .BasedOn(typeof(ICar))
    .WithServiceFirstInterface());
container.Register(
    Classes.FromThisAssembly()
    .BasedOn(typeof(IEditorVm<>))
    .WithServiceFirstInterface());

最后,会有一个UI显示汽车列表(我可以使用ICar[]注入汽车)。

当用户选择汽车时,我想解析相应的VM,但是我看到的唯一的解析通用示例涉及指定类型(例如var vm = container.Resolve<IEditorVm<Ford>>();)。

正在寻找有关如何实现此目标的建议。当然,当使用其他设计可能会提供更合适的解决方案时,我可能会尝试使用Windsor来解决这个问题……

0 个答案:

没有答案