本文例子說明
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>宿主 WorkflowInvoker.Invoke(new myNativeActivityWorkflow()); 結果
本文例子下載:http://files.cnblogs.com/foundation/ActivityWithResultSample.rar