gpt4 book ai didi

c# - 自定义工作流事件中的依赖注入(inject)

转载 作者:行者123 更新时间:2023-11-30 20:59:30 24 4
gpt4 key购买 nike

我有一个具有工作流的标准应用程序。客户可以在设计器中自定义工作流程。现在我们正在为特定客户进行一些自定义事件。自定义事件通过接口(interface)与业务层进行通信。如何为接口(interface)提供该接口(interface)的实现?

标准应用程序不知道该接口(interface)的接口(interface)和实现是非常重要的,因为它是该特定客户的自定义代码。该事件是通过标准工作流程找到的,因此已经可以正常工作了。

我看到很多关于扩展的信息,但我真的不知道它是如何工作的。

自定义事件

public sealed class GetDealerDetails : CodeActivity
{
/////// <summary>
/////// The dealer controller with all the businesslogic.
/////// </summary>
////private readonly IDealerController _dealerController;

[Inject]
public IDealerController DealerController { private get; set; }

////public GetDealerDetails()
////{

////}

////[Inject]
////public GetDealerDetails(IDealerController dealerController)
////{
//// _dealerController = dealerController;
////}

protected override void Execute(CodeActivityContext context)
{
Dealer dealer = DealerController.GetDealerDetails(5);
}
}

我在我的标准应用程序中使用 Ninject。我尝试使用构造函数注入(inject)和属性注入(inject),但它不起作用。 DealerController 保持 null

编辑其余代码可在此处找到:Inject custom code in standard application

最佳答案

重要的是您必须使用我随 ninject 一起提供的工作流应用程序包装器。只有这样我才能建立事件。诀窍如下:您不能将构造函数注入(inject)与自定义工作流事件一起使用。 WF的事件很特别。通常,当您编写了工作流代码后,我们会在 lambda 表达式中使用 new 运算符来构建它们,然后延迟执行。所以我的 ninject 扩展只有在事件已经建立时才能发挥它的魔力。因此,您需要在 ninject 的工作流应用程序中传入事件树的根事件。然后这会在内部解析整个事件树并注入(inject)所有用 inject 属性装饰的属性。

但您的实际问题是库中的错误,我现在已经修复了。 BookmarkInfo 装饰器假定范围信息始终已设置,但事实并非如此。

关于c# - 自定义工作流事件中的依赖注入(inject),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15498403/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com