我有这样的构造函数的视图:
MyView(MyViewModel viewModel)
和带有如下构造函数的视图模型:
MyViewModel(RuntimeParameter runtimeParam, <design-time resolvable parameters>)
我想使用Castle Windsor的类型化工厂工具功能创建一个视图工厂,这样我就可以通过调用
MyView view = factory.Create(runtimeParam);
我已经能够使用Castle Windsor documentation here创建一个ViewModel工厂,但是我不能让View factory工作。传递给视图工厂的运行时参数需要传递给ViewModel。有没有办法让温莎这么做?
我想我可以使用两个工厂-一个用于视图,另一个用于视图模型,但这似乎很难看……
发布于 2013-03-05 03:10:39
不可能以您正在尝试的方式通过多层类型化工厂传递参数。我认为最好的办法是让视图依赖于ViewModel类型的工厂,并在其构造函数中从工厂请求ViewModel (如果您愿意,可以从另一个类型的工厂为视图调用它)。
作为另一种选择,考虑您的ViewModels是否真的需要通过类型化工厂来解析。是否可以从向容器注册的某些服务中获取该RuntimeParameter?一般来说,如果我能找到一种让“默认”行为工作的方法,我会尽量避免使用类型化的工厂。
https://stackoverflow.com/questions/15207890
复制相似问题