2012-02-24 68 views
-1

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

我有一个类:

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流程图或状态来使用它。

然后,我有我的主要应用:

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自己的类?

+0

我清理了它,但我认为你应该[编辑]并描述你正在尝试完成的事情。 – Will 2012-02-24 14:14:57

回答

0

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

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

但是,如果这不起作用,您将需要提供更多信息。

+0

好的,这有助于!现在我使用了一个变量来将“MyClass”放入工作流程中。我的问题是,MyClass也有事件!我如何处理工作流程中的这些事件?这可能吗?或者我应该在代码方面处理这些事件? – rubiktubik 2012-02-27 09:30:00

+1

事件有点棘手。您需要在主机应用程序之外的工作流程之外处理它们,然后使用书签来指示工作流程。请参阅http://archive.msdn.microsoft.com/wf4Callbacks – 2012-02-27 21:23:14

+0

感谢您的备份@RonJacobs! – 2012-02-28 02:23:10

0

您想在全局范围内使用该MyClass实例;是我如何阅读这个。

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

另一种方法是使类,因此它的所有方法,static

在这些方法的主题上,StackOverflow中有多个线程。此外,看来真正的论据是to have something in global scope or not,不一定如何即实施。