是否可以在您的工作流程活动中使用 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 类是此处的扩展,它没有基类或接口要求。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)