Windows工作流基金会或IOC容器和XX2B;依赖注入? 我试图找出Windows工作流基础的内部结构。因此,我们有一些软件组件,我们以工作流的形式将它们交织在一起,无论是基于条件的顺序工作流还是状态机工作流。现在,我在想(这里我可能错了),这不适用于IoC+依赖注入(通过Unity或Spring.net)。什么时候用什么??我的想法是否正确?

Windows工作流基金会或IOC容器和XX2B;依赖注入? 我试图找出Windows工作流基础的内部结构。因此,我们有一些软件组件,我们以工作流的形式将它们交织在一起,无论是基于条件的顺序工作流还是状态机工作流。现在,我在想(这里我可能错了),这不适用于IoC+依赖注入(通过Unity或Spring.net)。什么时候用什么??我的想法是否正确?,.net,dependency-injection,inversion-of-control,workflow-foundation,.net,Dependency Injection,Inversion Of Control,Workflow Foundation,我不太确定我是否理解这个问题,但无论如何我会尝试一下 WF不使用IOC容器。它使用ServiceLocator模式,您可以在其中向工作流运行时、服务定位器和工作流活动添加依赖项,并从工作流运行时检索这些服务 ServiceLocator和IOC模式类似,在解耦依赖项方面具有相同的目的。apporach是不同的,尽管在IOC容器中,使用ServiceLocator将依赖项推入,而使用ServiceLocator将依赖项拉出 希望这能回答您的问题,如果没有,我会尝试重新表述原始问题。我也在努力解决如

我不太确定我是否理解这个问题,但无论如何我会尝试一下

WF不使用IOC容器。它使用ServiceLocator模式,您可以在其中向工作流运行时、服务定位器和工作流活动添加依赖项,并从工作流运行时检索这些服务

ServiceLocator和IOC模式类似,在解耦依赖项方面具有相同的目的。apporach是不同的,尽管在IOC容器中,使用ServiceLocator将依赖项推入,而使用ServiceLocator将依赖项拉出


希望这能回答您的问题,如果没有,我会尝试重新表述原始问题。

我也在努力解决如何使用IOC容器从工作流中提供和服务的组件。正如其他答案所述,工作流实例希望使用服务定位器从运行时提取服务,而不是注入依赖项

弥合差距的一种简单方法是在设置WF运行时将依赖项从IOC容器中取出,然后使用AddService将它们放入运行时。您的工作流可以覆盖OnActivityExecutionContextLoad,并使用服务提供程序上的GetService方法将它们从运行时中提取出来,并将它们放到工作流上的[NonSerialized]公共属性中。然后,您可以从代码活动等访问服务


您还可以装配一个运行时服务,在激活工作流实例时注入依赖项。

我的问题有问题吗??已经两个小时没有任何回应了,就我个人而言,我不明白这个问题。“这不适用于……”这里的“相同”是什么?它们可以是顺序的还是状态机?(在这种情况下,我认为答案是否定的。)我建议重新措辞这个问题。