• WF4.0 基础 InvokeMethod 调用方法


    http://www.cnblogs.com/foundation/archive/2009/12/17/1626616.html

    本节主要介绍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());

    结果

  • 相关阅读:
    javascript小测试
    js设计模式--策略模式
    js设计模式--迭代器模式
    面试题自我解析
    js设计模式--工厂模式
    js设计模式--单体模式
    Python学习一:Python简介
    Angularjs学习笔记《一》
    实现字体最小,不是默认的12px,可以在视觉上最小达到6px
    css3 transform之后,图片的清晰度下降解决方式
  • 原文地址:https://www.cnblogs.com/50614090/p/2115984.html
Copyright © 2020-2023  润新知