InvokeMethod 是 WF 4.0 中呼叫 .NET 方法的核心活動,支援靜態/實例方法、泛型、params、out/ref 參數及非同步呼叫。本文透過完整範例逐一示範。
| 屬性 | 類型 | 說明 |
|---|---|---|
| TargetType | Type | 靜態方法的類別型別(與 TargetObject 擇一) |
| TargetObject | InArgument | 實例方法的物件參考(與 TargetType 擇一) |
| MethodName | string | 方法名稱 |
| Parameters | Collection<Argument> | 方法參數集合,依順序對應 |
| Result | OutArgument | 方法回傳值 |
| GenericTypeArguments | Collection<Type> | 泛型方法的型別參數 |
| RunAsynchronously | bool | 是否非同步執行 |

public class ClassMethod
{
public static int myMethod(int v1, int v2) => v1 + v2;
}
工作流變數:p1=1、p2=2、r 接收結果。設定 TargetType=ClassMethod、MethodName=myMethod、Parameters=[p1, p2]、Result=r。

public class InstanceMethod
{
public int myMethod(int v1, int v2) => v1 - v2;
}
設定 TargetObject 綁定實例變數,其餘同靜態方法。

public class ParamsMethod
{
public string myMethod(params string[] list)
{
var s = "";
foreach (var item in list) { Console.WriteLine(item); s += item; }
return s;
}
}
Parameters 集合直接對應陣列元素,依序加入三個字串變數。

public class OutMethod
{
public void myMethod(int v1, out int v2) => v2 = v1 * 10;
}
Parameters 中第二個參數 Direction=Out,綁定變數 o 接收輸出值。

參數 Direction=In/Out,傳入值並接收修改後的值。

public class GenericMethod
{
public int myGenericMethod<T1, T2>(T1 v1, T2 v2)
{
return int.Parse(v1.ToString()) + int.Parse(v2.ToString());
}
}
設定 GenericTypeArguments=[Int32, Int32],指定泛型型別參數。

設定 RunAsynchronously=true 可支援非同步方法,詳細內容將在下一篇「Delay 與 WF4 中的執行緒」說明。