WF4.0 基础篇 (十三) InvokeMethod 调用方法

本节主要介绍InvokeMethod 调用静态方法,实例方法,params参数方法,out参数方法,ref参数方法,范型方法

 

本文例子下载:

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

本文例子说明

image.png

 


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. 支持等待异步方法调用完成

 

 

image.png

 

调用静态方法

 

  • 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;

}

}

工作流

image.png

宿主

 

WorkflowInvoker.Invoke(new ClassMethodWorkflow());

结果

image.png

 

调用实例方法

 

  • 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;

}

}

工作流

image.png

宿主

 

WorkflowInvoker.Invoke(new instanceMethodWorkflow());

结果

image.png

 

调用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;

}

}

工作流

image.png

宿主

 

WorkflowInvoker.Invoke(new paramsMethodWorkflow());

结果

image.png

 

调用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;

}

}

工作流

image.png

宿主

 

WorkflowInvoker.Invoke(new outMethodWorkflow());

结果

image.png

 

调用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;

}

}

工作流

image.png

宿主

 

WorkflowInvoker.Invoke(new outMethodWorkflow());

结果

image.png

 

调用范型方法

[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;

}

}

工作流

image.png

宿主

 

WorkflowInvoker.Invoke(new genericMethodWorkflow());

结果

image.png

 

异步调用方法

这部分内容将在下一节[Delay 与WF4中的线程]中详细讲解

 

 


#转载请注明出处 www.skcircle.com 《少有人走的路》勇哥的工业自动化技术网站。如果需要本贴图片源码等资源,请向勇哥索取。
扫码加本站公众号

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

会员中心
搜索
«   2021年2月   »
1234567
891011121314
15161718192021
22232425262728
网站分类
标签列表
最新留言
    热门文章 | 热评文章 | 随机文章
文章归档
友情链接
  • 订阅本站的 RSS 2.0 新闻聚合
  • 扫描加本站机器视觉QQ群,验证答案为:halcon勇哥的机器视觉
  • 扫描加站长微信:站长微信:abc496103864
  • 扫描加站长QQ:
  • 扫描赞赏本站:

Powered By Z-BlogPHP 1.6.0 Valyria

Copyright Your skcircle.com Rights Reserved.

鄂ICP备18008319号


站长QQ:496103864 微信:abc496103864