在您的工作流程事件中可以使用DI吗?如果是的话,如何?

例如,如果您有类似的事件

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

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

我该如何设置Dependency

(我正在使用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)要求。

10-01 18:08
查看更多