程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> WF 4.0基礎篇(十三) InvokeMethod調用方法

WF 4.0基礎篇(十三) InvokeMethod調用方法

編輯:關於.NET

本節主要介紹InvokeMethod 調用靜態方法,實例方法,params參數方法,out參數方法,ref參數方法,范型方法

本文例子下載:

http://files.cnblogs.com/foundation/InvokeMethodWorkflow.rar

本文例子說明

InvokeMethod 調用方法

類名 System.Activities.Statements.InvokeMethod 文件 System.Activities.dll 結構說明 繼承 AsyncCodeActivity<TResult>
是一個 sealed類
override 了 [CacheMetadata方法] 與 [BeginExecute方 法] 與[EndExecute方法]
[GenericTypeArguments]屬性的類型為[Collection<Type>]
[MethodName]屬性的類型為[string]
[Parameters]屬性的類型為[Collection<Argument>]
[RunAsynchronously]屬性的類型為[bool]
[TargetObject]屬性的 類型為[InArgument]
[TargetType]屬性的類型為[Type]
[Result]屬性的類型為[OutArgument] 功能說明 1. 可以使用類方式, 對象方式調用方法
2. 可以調用實例方法,靜態方法
3. 支持參數數組
4. 支持方法泛型參數
5. 支持out參數,ref 參數
6. 支持等待異步方法調用完成

調用靜態方法

TargetType 屬性 : 方法的類名(浏覽方式),不能與TargetObject共存

MethotName 屬性 : 方法名 (字串方式)

Parameters 屬性 : 方法的參數,按方法參數順序,可以綁定到流程的參數上

Result 屬性 : 方法的返回值,可以綁定到流程的參數上

例:

1.定義一個具有靜態方法[myMethod]的類[ClassMethod]

2.在工作流中定義三個變量

int型變量p1,默認值為[1],做為[myMethod]方法的第一個參數

int型變量p2,默認值為[2],做為[myMethod]方法的第二個參數

int型變量r,用於接收[myMethod]方法的返回值

3.在流程中添加[InvokeMethod],參數配置見流程

4.在流程中添加[WriteLine],用於打印變量r

ClassMethod public class ClassMethod
{
public static int myMethod(int v1, int v2)
{
return v1 + v2;
}
} 工作流 宿主 WorkflowInvoker.Invoke(new ClassMethodWorkflow()); 結果

調用實例方法

TargetObject 屬性 : 對象名,綁定到流程的參數上(浏覽方式),不能與TargetType共存

MethotName 屬性 : 方法名 (字串方式)

Parameters 屬性 : 方法的參數,按方法參數順序,可以綁定到流程的參數上

Result 屬性 : 方法的返回值,可以綁定到流程的參數上

例:

1.定義一個具有靜態方法[myMethod]的類[instanceMethod]

2.在工作流中定義三個變量

int型變量p1,默認值為[1],做為[myMethod]方法的第一個參數

int型變量p2,默認值為[2],做為[myMethod]方法的第二個參數

int型變量r,用於接收[myMethod]方法的返回值

3.在流程中添加[InvokeMethod],參數配置見流程

4.在流程中添加[WriteLine],用於打印變量r

instanceMethod public class instanceMethod
{
public int myMethod(int v1, int v2)
{
return v1 - v2;
}
} 工作流 宿主 WorkflowInvoker.Invoke(new instanceMethodWorkflow()); 結果

調用params參數方法

設置[Parameters] 集合,以指方法的參數

TargetObject 屬性 : 對象名,綁定到流程的參數上(浏覽方式),不能與TargetType共存

MethotName 屬性 : 方法名 (字串方式)

Parameters 屬性 : 方法的參數,按方法參數順序,可以綁定到流程的參數上

Result 屬性 : 方法的返回值,可以綁定到流程的參數上

例:

1.定義一個具有靜態方法[myMethod]的類[paramsMethod]

2.在工作流中定義四個變量

string型變量p1,默認值為[wxd],做為[myMethod]方法params的第一個參數

string型變量p2,默認值為[lzm],做為[myMethod]方法params的第二個參數

string型變量p3,默認值為[lzm],做為[myMethod]方法params的第三個參數

string型變量r,用於接收[myMethod]方法的返回值

3.在流程中添加[InvokeMethod],參數配置見流程

4.在流程中添加[WriteLine],用於打印變量r

paramsMethod public class paramsMethod
{
public string myMethod(params string[] list)
{
string s = "";
for (int i = 0; i < list.Length; i++)
{
Console.WriteLine(list[i]);
s = s + list[i];
}
return s;
}
} 工作流 宿主 WorkflowInvoker.Invoke(new paramsMethodWorkflow()); 結果

調用out參數方法

設置[Parameters] 集合,[Direction] 設為 [Out]

TargetObject 屬性 : 對象名,綁定到流程的參數上(浏覽方式),不能與TargetType共存

MethotName 屬性 : 方法名 (字串方式)

Parameters 屬性 : 方法的參數,按方法參數順序,可以綁定到流程的參數上

Result 屬性 : 方法的返回值,可以綁定到流程的參數上

例:

1.定義一個具有靜態方法[myMethod]的類[outMethod]

2.在工作流中定義二個變量

int型變量p,默認值為[1],做為[myMethod]方法的第一個參數

int型變量o,默認值為[2],用於接收[myMethod]方法的out值

3.在流程中添加[InvokeMethod],參數配置見流程

4.在流程中添加[WriteLine],用於打印變量o

outMethod public class outMethod
{
public void myMethod(int v1, out int v2)
{
v2 = v1 * 10;
}
} 工作流 宿主 WorkflowInvoker.Invoke(new outMethodWorkflow()); 結果

調用ref參數方法

設置[Parameters] 集合,[Direction] 設為 [In/Out]

TargetObject 屬性 : 對象名,綁定到流程的參數上(浏覽方式),不能與TargetType共存

MethotName 屬性 : 方法名 (字串方式)

Parameters 屬性 : 方法的參數,按方法參數順序,可以綁定到流程的參數上

Result 屬性 : 方法的返回值,可以綁定到流程的參數上

例:

1.定義一個具有靜態方法[myMethod]的類[outMethod]

2.在工作流中定義二個變量

int型變量p,默認值為[2],做為[myMethod]方法的第一個參數

int型變量ro,默認值為[8],用於接收[myMethod]方法的ref值

3.在流程中添加[InvokeMethod],參數配置見流程

4.在流程中添加[WriteLine],用於打印變量ro

outMethod public class outMethod
{
public void myMethod(int v1, out int v2)
{
v2 = v1 * 10;
}
} 工作流 宿主 WorkflowInvoker.Invoke(new outMethodWorkflow()); 結果

調用范型方法

[InvokeMethod ]可以調用范型方法,設置[GenericTypeArguments]集合,以指定范型方法的范型參數

設置[Parameters] 集合,以指方法的參數

TargetObject 屬性 : 對象名,綁定到流程的參數上(浏覽方式),不能與TargetType共存

MethotName 屬性 : 方法名 (字串方式)

Parameters 屬性 : 方法的參數,按方法參數順序,可以綁定到流程的參數上

Result 屬性 : 方法的返回值,可以綁定到流程的參數上

GenericTypeArguments 集合:以指定范型方法的范型參數

例:

1.定義一個具有靜態方法[myMethod]的類[genericMethod]

2.在工作流中定義三個變量

int型變量p1,默認值為[10],做為[myMethod]方法的第一個參數

int型變量p2,默認值為[20],做為[myMethod]方法的第二個參數

int型變量r,用於接收[myMethod]方法的返回值

3.在流程中添加[InvokeMethod],參數配置見流程

4.在流程中添加[WriteLine],用於打印變量r

genericMethod public class genericMethod
{
public int myGenericMethod<T1, T2>(T1 v1, T2 v2)
{
int n1 = int.Parse(v1.ToString());
int n2 = int.Parse(v2.ToString());
return n1 +n2;
}
} 工作流 宿主 WorkflowInvoker.Invoke(new genericMethodWorkflow()); 結果

異步調用方法

這部分內容將在下一節[Delay 與WF4中的線程]中詳細講解

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