zoukankan      html  css  js  c++  java
  • WF4.0 基础篇 (十三) InvokeMethod 调用方法

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

     

    本文例子下载:

    https://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中的线程]中详细讲解

     

     

  • 相关阅读:
    install sklearn-crfsuite on mac
    排序算法之选择排序
    排序算法之冒泡排序
    Python中__init__与self的解释
    Python中 if __name__ == "__main__"解释
    Python活力练习Day25
    Python活力练习Day24
    Python活力练习Day23
    动态规划之编辑距离
    Python活力练习Day22
  • 原文地址:https://www.cnblogs.com/foundation/p/1626616.html
Copyright © 2011-2022 走看看