在工作流程中使用POCO类型

时间:2012-02-24 13:29:32

标签: c# workflow-foundation-4

我正在使用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” - &gt; “MyClassInstance”是一个MyClass类型,我将它用于整个工作流程。

这感觉不正确。如何使用WF4自己的classe?

2 个答案:

答案 0 :(得分:0)

好的 - 所以,如果我正确地理解了您正在尝试理解的内容,那么如何将您的类型的新实例添加到工作流程中以便可以使用它。一般来说,我总是能够简单地声明一个变量并以某种方式初始化它,但问题是你需要什么样的初始化?

如果您只需要创建一个新实例,如上所示,则声明一个类型的变量,并在Default Value中发出New {TypeName}()以创建一个新实例。

但是,如果这没有帮助,您将需要提供更多信息。

答案 1 :(得分:0)

您希望在全局范围内使用该MyClass实例;我是怎么看的。

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

另一种方法是创建类,以及它的所有方法static

StackOverflow中有多个关于这些方法主题的线程。此外,真正的争论似乎是to have something in global scope or not,不一定是如何实施。