Workflow Foundation 4中的依赖注入/ IoC

Fab*_*ano 13 c# dependency-injection spring.net workflow-foundation workflow-foundation-4

是否可以在工作流程活动中使用DI?如果是,怎么样?

例如,如果您有类似的活动

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

    protected override void Execute(CodeActivityContext context)
    {
        Dependency.DoSomething();
    }
}
Run Code Online (Sandbox Code Playgroud)

我怎么设置Dependency

(我正在使用Spring.Net)

Mau*_*ice 20

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

ServiceLocator和IOC模式类似,在解耦依赖关系时具有相同的目的.虽然在一个IOC容器中推送依赖关系,而ServiceLocator用于拉出依赖关系,但apporach是不同的.

活动示例:

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();

    }
}
Run Code Online (Sandbox Code Playgroud)

MyExtension类是此处的扩展,它没有基类或接口要求.