Castle Windsor:类型化工厂设施可以将参数传递给类型的依赖项之一吗?

本文关键字:类型 依赖 参数传递 类型化 Windsor 化工厂 设施 Castle | 更新日期: 2023-09-27 18:02:03

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

MyView(MyViewModel viewModel)

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

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

我想使用Castle Windsor的类型化工厂设施功能创建一个视图工厂,这样我就可以通过调用

创建视图

MyView view = factory.Create(runtimeParam);

我已经能够使用城堡温莎文档在这里做一个ViewModel工厂,但我不能使视图工厂工作。传递给View工厂的运行时参数需要传递给ViewModel。有办法让温莎这么做吗?

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

Castle Windsor:类型化工厂设施可以将参数传递给类型的依赖项之一吗?

不可能像您所尝试的那样通过多个类型工厂层传递参数。我认为你最好的选择是让你的视图依赖于你的ViewModel类型工厂,并在其构造函数中从工厂请求ViewModel(如果你愿意,可以从视图的另一个类型工厂调用ViewModel)。

作为备选方案,考虑是否真的需要通过类型化工厂来解析ViewModels。是否可以从容器中注册的某些服务中获取RuntimeParameter ?一般来说,如果我能找到一种使"默认"行为工作的方法,我会尽量避免类型化工厂。