程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> WF4.0基礎篇(二十) ActivityWithResult 有返回值Activity

WF4.0基礎篇(二十) ActivityWithResult 有返回值Activity

編輯:關於.NET

本文例子說明

ActivityWithResult

 

類名

System.Activities.ActivityWithResult

 

文件

System.Activities.dll

 

結構說明

繼承Activity

 

是一個 Abstrace類

[Result]屬性 的類型為[System.Activities.OutArgument]

[ResultType]屬性 的類型為[System.Type]

 

功能說明

[Result]屬性為返回值

 

[ResultType]屬性為返回值類型

派生類 System.Activities.Activity<TResult>

無法從System.Activities.Activity<TResult>實現自定義Activity,因為 Activity<TResult>沒有提供[Execute 方法],而 [InternalExecute 方法是 internal sealed ](具體見[Activity的執行原理])

可以從

CodeActivity<TResult>

NativeActivity<TResult>

AsycCodeActivity<TResult>

實現自 定義Activity

CodeActivity<TResult>

通過override [Execute 方法]以方法的返回值的方式將值返回到[Result]屬性

例:場景 說明:有兩個[Int]參數x,y,返回值為x+y

Activity

public sealed class myCodeActivity : CodeActivity<int>
{
public InArgument<int> X { get; set; }
public InArgument<int> Y { get; set; }
protected override int Execute(CodeActivityContext context)
{
int x = X.Get(context);
int y = Y.Get(context);
return x + y;
//----- or --------- 
// context.SetValue(base.Result, x + y);
// return base.Result.Get(context);
}
}

工作流

宿主:

WorkflowInvoker.Invoke(new myCodeActivityWorkflow());

結果

NativeActivity<TResult>

通過為[Result]屬性賦值實現

例:場景說明:有兩個[Int]參 數x,y,返回值為x+y

Activity public sealed class myNativeActivity :  NativeActivity<int>
{
public System.Activities.InArgument<int> x
{ set; get; }

public System.Activities.InArgument<int> y
{ set; get; }

protected override void Execute(NativeActivityContext context)
{
int r = (int)x.Get(context) + (int)y.Get(context);
this.Result.Set(context, r);

}
} 工作流

 

宿主 WorkflowInvoker.Invoke(new myNativeActivityWorkflow()); 結果

本文例子下載:http://files.cnblogs.com/foundation/ActivityWithResultSample.rar

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved