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