2

我对构造函数有这样的看法:

MyView(MyViewModel viewModel)

和具有如下构造函数的视图模型:

MyViewModel(RuntimeParameter runtimeParam, <design-time resolvable parameters>)

我想使用 Castle Windsor 的 Typed Factory Facility 功能创建一个视图工厂,以便我可以通过调用创建视图

MyView view = factory.Create(runtimeParam);

我已经能够在此处使用 Castle Windsor 文档制作 ViewModel 工厂,但我无法让 View Factory 工作。传递给 View 工厂的运行时参数需要传递给 ViewModel。有没有办法告诉温莎这样做?

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

4

1 回答 1

1

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

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

于 2013-03-04T19:10:39.007 回答