2012-02-24 65 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,不一定如何即實施。