Workflow Foundation 4中的dependency injection/ IoC

是否可以在工作流程活动中使用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模式类似,在解耦依赖关系时具有相同的目的。 apporach是不同的,虽然在一个IOC容器推送依赖关系,而ServiceLocator用于拉出依赖关系。

活动示例:

 public class MyBookmarkedActivity : NativeActivity { protected override void CacheMetadata(NativeActivityMetadata metadata) { base.CacheMetadata(metadata); metadata.AddDefaultExtensionProvider(() => new MyExtension()); } protected override void Execute(NativeActivityContext context) { var extension = context.GetExtension(); extension.DoSomething(); } } 

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