WF4.0 基础篇 (十三) InvokeMethod 调用方法
来源:互联网 发布:js ajax 跨域访问 编辑:程序博客网 时间:2024/05/24 05:45
本节主要介绍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
publicclass ClassMethod
{
publicstatic int myMethod(int v1,int v2)
{
return v1 + v2;
}
}
工作流
宿主
WorkflowInvoker.Invoke(newClassMethodWorkflow());
结果
调用实例方法
- 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
publicclass instanceMethod
{
publicint myMethod(int v1,int v2)
{
return v1 - v2;
}
}
工作流
宿主
WorkflowInvoker.Invoke(newinstanceMethodWorkflow());
结果
调用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
publicclass paramsMethod
{
publicstring myMethod(paramsstring[] list)
{
string s ="";
for (int i =0; i < list.Length; i++)
{
Console.WriteLine(list[i]);
s = s + list[i];
}
return s;
}
}
工作流
宿主
WorkflowInvoker.Invoke(newparamsMethodWorkflow());
结果
调用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
publicclass outMethod
{
publicvoid myMethod(int v1,out int v2)
{
v2 = v1 * 10;
}
}
工作流
宿主
WorkflowInvoker.Invoke(newoutMethodWorkflow());
结果
调用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
publicclass outMethod
{
publicvoid myMethod(int v1,out int v2)
{
v2 = v1 * 10;
}
}
工作流
宿主
WorkflowInvoker.Invoke(newoutMethodWorkflow());
结果
调用范型方法
[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
publicclass genericMethod
{
publicint myGenericMethod<T1, T2>(T1 v1, T2 v2)
{
int n1 =int.Parse(v1.ToString());
int n2 =int.Parse(v2.ToString());
return n1 +n2;
}
}
工作流
宿主
WorkflowInvoker.Invoke(newgenericMethodWorkflow());
结果
异步调用方法
这部分内容将在下一节[Delay 与WF4中的线程]中详细讲解
- WF4.0 基础篇 (十三) InvokeMethod 调用方法
- WF4.0 基础篇 (二十三) 范型Activity
- WF4.0 基础篇 (二十八) WF调用PowerShell
- WF4.0 基础篇 (十四) Delay 与WF4中的线程
- WF4.0 基础篇 (十六) CompensableActivity 补偿
- WF4.0 基础篇 (十七) Bookmark
- WF4.0 基础篇 (十八) Flowchart
- WF4.0 基础篇 (二十一) WorkflowInvoker
- WF4.0 基础篇 (二十二) Tracking
- WF4.0 基础篇 (二十九) WorkflowInspectionServices
- WF4.0 基础篇 (二十六) Interop调用WF3.X的Activity
- WF4.0 基础篇 (一)开始使用WF
- WF4.0 基础篇 (四) 顺序容器Sequence 与CodeActivity
- WF4.0 基础篇 (五) 数据的传递 Variable变量
- WF4.0 基础篇 (六) 数据的传递 Arguments 参数
- WF4.0 基础篇 (八) 控制流Activity
- WF4.0 基础篇 (一)开始使用WF
- WF4.0 基础篇 (四) 顺序容器Sequence 与CodeActivity
- Core animation 编程指南
- 【两性】你不知道的冷门性知识
- 找学习者
- mongodb基础系列——数据库查询数据返回前台JSP(二)
- ffmpeg 源代码简单分析 : avcodec_decode_video2()
- WF4.0 基础篇 (十三) InvokeMethod 调用方法
- adb not responding you can wait more
- 操作系统常见面试题(答案仅供参考)
- hdu 3236 Gift Hunting(背包问题)
- Unity3D类分析——全局的类分析
- CMD乱码_更换CMD编码
- HDU - 1421 搬寝室(经典DP)
- 本机调试Discuz提示“服务器限制无法上传那么大的附件”的解决方法
- Linux线程操作