c# - Workflow Foundation 4 中的依赖注入(inject)/IoC

标签 c# dependency-injection workflow-foundation workflow-foundation-4 spring.net

是否可以在您的工作流事件中使用 DI?如果是,怎么做?

例如,如果您有这样的事件

public sealed class MyActivity : CodeActivity
{
    public MyClass Dependency { get; set; }

    protected override void Execute(CodeActivityContext context)
    {
        Dependency.DoSomething();
    }
}

如何设置依赖

(我正在使用 Spring.Net)

最佳答案

工作流不使用 IOC 容器。它使用 ServiceLocator 模式,您可以在其中将依赖项作为扩展和工作流事件添加到工作流运行时,并通过上下文从工作流扩展中检索这些服务。

ServiceLocator 和 IOC 模式相似,在解耦依赖方面具有相同的目的。尽管在 IOC 容器中推送依赖项,而 ServiceLocator 用于拉出依赖项,但该方法是不同的。

示例事件:

public class MyBookmarkedActivity : NativeActivity
{
    protected override void CacheMetadata(NativeActivityMetadata metadata)
    {
        base.CacheMetadata(metadata);
        metadata.AddDefaultExtensionProvider<MyExtension>(() => new MyExtension());
    }

    protected override void Execute(NativeActivityContext context)
    {
        var extension = context.GetExtension<MyExtension>();
        extension.DoSomething();

    }
}

MyExtension 类是这里的扩展,它没有基类和接口(interface)要求。

关于c# - Workflow Foundation 4 中的依赖注入(inject)/IoC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3825791/

相关文章:

c# - 由任务计划程序启动时隐藏 C# 控制台应用程序窗口

c# - 尝试 EF 代码优先和迁移 - 绊脚石

asp.net-mvc - Ninject 绑定(bind)到不同的 Controller

c# - Workflow Manager 1.0 可行吗?

visual-studio-2010 - 延迟事件在 Sharepoint 2010 工作流程中并不总是有效

.net - Windows 工作流是否可以封装到 Web 服务中,以便任何类型的客户端都可以触发它?

c# - Cast 接口(interface)和类对象

c# - SSIS 脚本组件读取 Web 数据但不创建 Output0Buffer 对象

asp.net-mvc-3 - 自定义成员提供程序中的 Unity 依赖注入(inject)

c# - 洋葱架构和在 DI 容器中注册依赖项