是否可以在您的工作流事件中使用 DI?如果是,怎么做?
例如,如果您有这样的事件
public sealed class MyActivity : CodeActivity
{
public MyClass Dependency { get; set; }
protected override void Execute(CodeActivityContext context)
{
Dependency.DoSomething();
}
}
如何设置依赖
?
(我正在使用 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)要求。
关于c# - Workflow Foundation 4 中的依赖注入(inject)/IoC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3825791/