Castle Windsor:Typed Factory Facility可以将参数传递给类型的依赖项之一吗?

时间:2013-03-04 17:58:09

标签: c# castle-windsor typed-factory-facility

我有像这样的构造函数的视图:

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。有没有办法告诉温莎这样做?

我想我可以使用两个工厂 - 一个用于视图,一个用于视图模型,但这看起来很难看......

1 个答案:

答案 0 :(得分:1)

无法以您尝试的方式通过多个类型化工厂层传递参数。我认为您最好的选择是让您的View依赖于您的ViewModel类型工厂,并在其构造函数中从工厂请求ViewModel(如果您愿意,可以从其他类型的工厂调用View。)

作为替代方案,请考虑您的ViewModel是否真的需要通过类型化工厂来解决。是否可以从容器中注册的某个服务获取RuntimeParameter?通常,如果我能找到一种方法使“默认”行为起作用,我会尽量避免使用类型化的工厂。