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类是此处的扩展,它没有基类或接口要求。