2012-02-03 52 views
3

我目前正在使用Workflow Foundation進行修改。我有一個包含參數的活動:如何獲取ActivityContext以獲取InArgument的值

System.Activities.InArgument<double> Temperature 

不過,我想這個參數的值在我的活動,以便做一些驗證它(並在此基礎上參數設置在我的活動屬性)。我知道有一個Get方法需要ActivityContext,所以在運行時會知道實際值。我的問題是,我如何獲得ActivityContext,還是有更好的方法?

注意:我在我的應用中託管了WorkflowDesigner,我放棄了我的活動。所以Activity1包含一個「溫度」屬性,並將其作爲InArgument傳遞給Activity2。然後我驗證Activity2,但到目前爲止無法獲得ActivityContext。在執行時我不需要它,但是在設計時。

在此先感謝。

+1

你正在處理什麼樣的活動?在CodeActivity的情況下,您將CodeActivityContext作爲Execute方法的參數。 – ElDog 2012-02-03 15:30:14

+0

我寫過自己從System.Activities.Activity中繼承的 – Jeb 2012-02-03 15:31:55

+1

如果您要在裏面運行自己的代碼,那麼您爲什麼不從CodeActivity繼承它?這將解決問題。 – ElDog 2012-02-03 15:34:56

回答

2

這聽起來像你想要使用依賴屬性,就像他們在WF3中將活動1的輸出連接到設計時間的活動2 的輸入。那是對的嗎?

在WF4重寫中,他們撕掉了所有允許這樣做的依賴項屬性。

在設計階段特別提到訪問ActivityContext項目:我不相信這是可能的。 AC對象在活動執行時創建。它允許多次執行活動的一個實例(循環的每次迭代都有一個與之關聯的獨立AC對象,因爲在運行時期間創建了AC對象)。

Here是一篇很好的Microsoft博客文章,描述了WF3和WF4活動運行時執行之間的區別。我認爲這可能有助於澄清你想要做什麼以及如何解決問題。