我有像这样的构造函数的视图:
MyView(MyViewModel viewModel)
和构造函数的viewmodels如下:
MyViewModel(RuntimeParameter runtimeParam, <design-time resolvable parameters>)
我想使用Castle Windsor的Typed Factory Facility功能创建一个View Factory,以便我可以通过调用
创建视图 MyView view = factory.Create(runtimeParam);
我已经能够使用Castle Windsor文档here创建一个ViewModel工厂,但我无法使View Factory工作。传递给View工厂的运行时参数需要传递给ViewModel。有没有办法告诉温莎这样做?
我想我可以使用两个工厂 - 一个用于视图,一个用于视图模型,但这看起来很难看......
答案 0 :(得分:1)
无法以您尝试的方式通过多个类型化工厂层传递参数。我认为您最好的选择是让您的View依赖于您的ViewModel类型工厂,并在其构造函数中从工厂请求ViewModel(如果您愿意,可以从其他类型的工厂调用View。)
作为替代方案,请考虑您的ViewModel是否真的需要通过类型化工厂来解决。是否可以从容器中注册的某个服务获取RuntimeParameter?通常,如果我能找到一种方法使“默认”行为起作用,我会尽量避免使用类型化的工厂。