2011-04-29 81 views
2

我们有一个应用程序,我们正在创建一个活动(say = CallA),这个活动将用在worklfow项目中。此活动(CallA)将调用另一个类(和另一个名称空间)中存在的方法。我已经写了方法的示例代码下面被称为: -Workflow 4.0中的InvokeMethod

namespace WorkflowApplication1 
{ 
    class Class1 
    { 
     public int Trial(int a, int b) 
     { 
      return 23; 
     } 
    } 
} 

我们想使用工具箱提供的InvokeMethod功能,并且不希望使用codeactivity。

如果有人使用过WF 4.0的这个功能,请帮忙。

在此先感谢。

回答

2

在目标类型中,您必须指向实现该方法的类。

在方法名称中,您必须写出名称。如果该方法不是静态的,那么您需要创建该类类型的变量,并提前对其进行初始化并在TargetObject属性中使用它。你需要在你的WF一个变量来存储结果(使用Invoke活动Result属性)

希望它可以帮助

+0

我知道这是几年后,但使用InvokeMethod而不是简单的Assign的优点是什么,我发现它更多可读? – Thomas 2013-10-16 07:23:53

+0

你可以做更多的工作。而已。 – 2016-05-24 14:23:52

0

这里遵循这个问题

1建议)创建一个Windows窗体应用
2)添加一个称为1级和命名空间更改为WorkflowApplication1
3)从1类整个代码更改为

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Text; 
using System.Threading.Tasks; 

namespace WorkflowApplication1 
{ 
    public class Class1 
    { 
     public int Trial(int a, int b) 
     { 
      return 23; 
     } 
    } 
} 

4)添加称为活性1
5)的活动编译溶液
6)打开活性1并添加一个序列
7)点击序列,创建2个变量,如下所示
enter image description here 8)插入一个的InvokeMethod和的WriteLine活动,如下所示

enter image description here
9)编辑调用方法的参数,如下面的
enter image description here 10)添加一个按钮,单击它两次,以创建Click事件
11)添加下面的代码你Form1类中,改变button1_Click事件

namespace Generic 
{ 

public partial class Form1 : Form 
{ 

    WorkflowApplication WFApp = null; 
    AutoResetEvent WFAppEvent = null; 

    public void RunWFApp() 
    { 
     WFAppEvent = new AutoResetEvent(false); 
     WFApp = new WorkflowApplication(new Activity1()); 

     WFApp.Completed = delegate (WorkflowApplicationCompletedEventArgs e) 
     { 
      WFAppEvent.Set(); 
     }; 
     WFApp.Run(); 
    } 
    private void button1_Click(object sender, EventArgs e) 
    { 
     RunWFApp(); 
    } 

    ... 
    ... 
    } 
} 

12)打开输出窗口(Ctrl -alt-O)。运行应用程序,点击按钮,并检查数字23是否显示在输出窗口中

相关问题