ActivityFunc<TResult>
類名
System.Activities.ActivityFunc<TResult>
System.Activities.ActivityFunc<T, TResult>
System.Activities.ActivityFunc<T1, T2, TResult>
System.Activities.ActivityFunc<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult>
文件
System.Activities.dll
結構說明
System.Activities.ActivityDelegate
是一個 sealed類
[DisplayName] 屬性 的類型為[string],是並行分支集 合
[Handler] 屬性 的類型為[System.Activities.Activity],為要執行的Activity
[Argument,Argument1,Argument2,Argument16] 屬性 的類型為[System.Activities.DelegateInArgument<T>],用於傳遞參數用
[Result]屬性 的類型為[System.Activities.DelegateOutArgument<TResult>] ,用於得到返回值
功能說明
ActivityFunc<T,,, TResult> 與流程中應的 InvokeFunc<TResult>,InvokeAction<T,,,TResult活動一起使用
InvokeFunc
類名 System.Activities.Expressions.InvokeFunc<TResult>
System.Activities.Expressions.InvokeFunc<T, TResult>
System.Activities.Expressions.InvokeFunc<T1, T2, TResult>
System.Activities.Expressions.InvokeFunc<T1, T2, T3, T4, T5, T6, T7, T8, T9, T10, T11, T12, T13, T14, T15, T16, TResult>
文件 System.Activities.dll 結構說明 繼承 NativeActivity<TResult>
是一個 sealed類
override 了 [CacheMetadata方法] 與 [Execute方法] 與[Cancel 方法 ]
[Func]屬性 的類型為[System.Activities.ActivityFunc<TResult>,ActivityFunc<T,,,TResult> ],為要調 用的ActivityAction
[Argument,Argument1,Argument2,Argument16] 屬性 的類型為[System.Activities.InArgument<T> ], 用於傳遞參數用
功能說明 ActivityFunc<T,,, TResult> 與流程中應的 InvokeFunc<TResult>,InvokeAction<T,,,TResult活動一起使用
使用說明
ActivityFunc<TResult>,ActivityFunc<T,,,TResult>默認沒有添加到工具欄,要手動添加
例子 要實現如下功能:
在流程中定義一個string變量[myVariable]
在流程中定義一個ActivityFunc 屬性參數[myFunc]
在流程中添加一個[ActivityAFunc<T,T>],這個活動會將[myVariable]傳入[myFunc],並調用[myFunc]
在流程中添加 一個[WriteLine],用於打印[ActivityAFunc<T,TResult>]的返回值
[myFunc]的具體內容由創建流程時指定
流程
為其綁定要[InvokeFunc]綁定要執行的[myFunc],此步要在XAML文件中進行
<InvokeFunc x:TypeArguments="x:String, x:String" Argument="[myVariable]" sap:VirtualizedContainerService.HintSize="213,22" Result="[myResult]">
<PropertyReference x:TypeArguments="ActivityFunc(x:String, x:String)" PropertyName="myFunc" />
</InvokeFunc>
宿主
一個用於測試的有返回值Activity
public class myActivity : CodeActivity<string>
{
public InArgument<string> inArgument
{ set; get; }
protected override string Execute(CodeActivityContext context)
{
string v = context.GetValue(inArgument);
return v+":wxd";
}
}
宿主
testWorkflow testWorkflow = new testWorkflow();
ActivityFunc<string, string> activityFunc = new ActivityFunc<string, string>();
activityFunc.Argument = new DelegateInArgument<string>();
activityFunc.Handler = new myActivity() { inArgument = activityFunc.Argument };
testWorkflow.myFunc = activityFunc;
WorkflowInvoker.Invoke(testWorkflow);
結果
示例代碼:http://www.bianceng.net/dotnet/201208/242.htm