这是我面临的问题的简化版本。
比方说,我的应用程序包含许多“汽车”实现。每辆汽车都有一个用于编辑汽车详细信息的相应视图模型,如下所示:
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来解决这个问题……