在工作流中使用POCO类型

本文关键字:POCO 类型 工作流 | 更新日期: 2023-09-27 18:25:36

我正在使用WF4,需要在工作流中使用我以前创建的类型,但我不确定我的策略。

我有一门课:

class MyClass
{
    public MyClass()
    {
        //Constructor Logic
    }
    public void Connect()
    {
        //Connect to a TCP/Device for example
    }
    public void Disconnect()
    {
        //Disconnect from a TCP/Device for example
    }
}

我想在WF4流程图或StateMachine中使用它。

然后我有了我的主要应用程序:

class Program
{
    private MyClass myObject;
    WorkflowApplication WorkflowApplicationHoster;
    static void Main(string[] args)
    {
       myObject = new MyClass;
       IDictionary<string,object> input = new Dictionary<string,object>() {{"MyClassInstance",myObject} };
       WorkflowApplicationHoster = new WorkflowApplication(new MyWorkflow,input);
        WorkflowApplicationHoster.Run();
    }
}

在我的工作流中,我有"InArgument"->"MyClassInstance",这是一个MyClass类型,我将其用于整个工作流。

这感觉不对。如何在WF4中使用自己的classe?

在工作流中使用POCO类型

好吧——如果我能正确理解这一点,那么你想要理解的是如何将你类型的新实例放入工作流中,以便使用它。一般来说,我总是能够简单地声明一个变量并以某种方式初始化它,但问题变成了你需要什么样的初始化?

如果您只需要创建它的一个新实例,如上图所示,那么声明一个您类型的变量,并在默认值中发出new{TypeName}()来创建一个新的实例。

然而,如果这没有帮助,你将需要提供更多的信息。

您希望在全局范围内使用MyClass实例;就是我读这篇文章的方式。

一种流行的方法是将其创建为Singleton。一般来说,这意味着您有一个私有/受保护的构造函数和一个公共Instance方法,可以确保只创建一个实例。

另一种方法是使类及其所有方法成为static

StackOverflow中有多个关于这些方法主题的线程。此外,真正的争论似乎是是否要在全局范围内进行,而不一定是如何实现