Design patterns Castle:按需创建组件&x2B;上下文信息

Design patterns Castle:按需创建组件&x2B;上下文信息,design-patterns,inversion-of-control,castle-windsor,Design Patterns,Inversion Of Control,Castle Windsor,(注意:我已将这个问题从最初关于子容器的查询更新为按需创建组件) 这是我的设计问题:我将Windsor容器用于主应用程序工作流,但我需要按需创建某些操作(例如,当用户单击菜单项时)。我希望这些操作与上下文信息自动关联(例如,DeletePointsActionaction必须在构造函数中获取要删除的点的列表) 起初,我想拥有一个小型的IoC,它会不断地更新这些上下文信息,然后用于接线,我想知道子容器是否可以完成这项工作 但在阅读了更多关于子容器的内容并仔细思考了我的问题之后,我现在找到了一个似乎

(注意:我已将这个问题从最初关于子容器的查询更新为按需创建组件)

这是我的设计问题:我将Windsor容器用于主应用程序工作流,但我需要按需创建某些操作(例如,当用户单击菜单项时)。我希望这些操作与上下文信息自动关联(例如,
DeletePointsAction
action必须在构造函数中获取要删除的点的列表)

起初,我想拥有一个小型的IoC,它会不断地更新这些上下文信息,然后用于接线,我想知道子容器是否可以完成这项工作

但在阅读了更多关于子容器的内容并仔细思考了我的问题之后,我现在找到了一个似乎更好的解决方案(至少乍一看是这样):保留一个包含此上下文信息的
词典
,并在从Windsor容器创建操作时使用此词典。我现在看到的唯一缺点是字典中键的名称必须始终与操作的构造函数参数的名称相对应

另一种选择是编写我自己的,这将足够聪明,可以根据字典值类型而不一定是它的键名来找出依赖项。不过,我不确定这意味着要做多少工作


关于这个问题有什么想法/经验吗?

ISubDependencyResolver似乎不是很多工作。我认为,要给出一个通用的答案,在很大程度上取决于您的设计和情况的具体情况。我的建议是,试着用你知道你将要面对的几个最复杂的场景来解决问题,看看这对你是如何起作用的


好消息是,如果您将详细信息隐藏在容器后面,以后如果发现此解决方案不适合您的需要,您将能够切换到其他解决方案。

ISubDependencyResolver似乎工作量不大。我认为,要给出一个通用的答案,在很大程度上取决于您的设计和情况的具体情况。我的建议是,试着用你知道你将要面对的几个最复杂的场景来解决问题,看看这对你是如何起作用的


好消息是,如果您将详细信息隐藏在容器后面,稍后您将能够切换到其他解决方案,如果您发现此解决方案不适合您的需要。

Krzysztof,没有什么太具体的-我只希望能够使用主容器中注册的组件+从“轻量级”子容器(或只是一本字典)。最好只是扩展解析行为,这样我就不需要从头开始编写整个解析程序:)。我会像你建议的那样调查ISubDependencyResolver。酷。你应该在博客上记录你的体验,如果你发现任何你认为适合Windsor通用的想法,请将其作为建议提交给Krzysztof,不要太具体ic-我只想能够使用主容器中注册的组件+从“轻量级”子容器(或仅仅是一个字典)中给定的值来解决依赖关系。最好是通过扩展解析行为,这样我就不需要从头开始编写整个解析程序:)。我会像你建议的那样调查ISubDependencyResolver。酷。你应该在博客上记录你对它的体验,如果你发现任何你认为适合Windsor普遍使用的想法,请将其作为建议提交给我们