InvokeMethod 活动设计器
InvokeMethod 设计器用于创建和配置 InvokeMethod 活动。
InvokeMethod 活动
InvokeMethod 调用指定对象或类型的公共方法。
使用 InvokeMethod 活动设计器
访问 InvokeMethod 活动设计器,它位于“工具箱”的“基元”类别中 。 可以将“InvokeMethod”活动设计器从“工具箱”拖放到工作流设计器图面上通常放置活动的任何位置,例如 Sequence 内 。 拖放活动设计器将创建一个 InvokeMethod 活动,其默认的 DisplayName 为 InvokeMethod。 可以在“InvokeMethod”活动设计器的标头中或在属性网格的“DisplayName”框中编辑 DisplayName 。
InvokeMethod 属性
下表显示 InvokeMethod 属性并说明如何在设计器中使用它们。 这些属性可以在属性网格中进行编辑,其中一些属性还可以在工作流设计器图面上进行编辑。
属性名称 | 必选 | 使用情况 |
---|---|---|
DisplayName | 错误 | InvokeMethod 活动的友好名称。 默认值为 InvokeMethod。 尽管 DisplayName 不是绝对必需的,但最好使用该属性。 |
MethodName | True | 要在执行活动时调用的方法的名称。 调用的方法必须声明为公共方法。 此属性可以在设计器图面上进行编辑,它是必需的。 |
Parameters | 错误 | 所调用方法的参数集合。 将参数添加到集合中的顺序必须与这些参数在方法签名中出现的顺序相同。 若要显示可从中设置此属性的“参数”对话框,请单击属性窗格的“参数”字段中的省略号按钮 。 单击“创建参数”按钮以添加参数。 |
Result | 错误 | 方法调用的返回值。 |
RunAsynchronously | True | 指定是否异步调用该方法。 默认值为 False。 |
TargetObject | 错误 | 包含要调用的方法的对象。 此属性可以在设计器图面上进行编辑。 必须设置 TargetObject 或 TargetType 之一。 |
TargetType | 错误 | TargetObject 的类型。 此属性可以在设计器图面上进行编辑。 只有当调用的方法为静态时,才必须设置此属性。 |
若要将参数作为 C# out 参数进行传递(例如 Method1(out myParam))
),请使用 OutArgument 而不是 InOutArgument
不能使用 InvokeMethod 活动调用带有名为 TargetObject 或 Result 的参数的方法 。 原因是 InvokeMethod 活动在 GenericTypeArguments 中注册 TargetObject、Result 和 CacheMetadata。
在 CacheMetadata 中注册这些参数的算法如下所列:
注册 TargetObject 自变量。
注册 Result 自变量。
循环访问 Parameters 集合并注册每个自变量。
产生的异常的类型为 InvalidWorkflowException 并带有以下消息:“InvokeMethod”: 已存在名为“TargetObject”的变量、RuntimeArgument 或 DelegateArgument。 在环境作用域中,名称必须唯一。
此限制不适用于 TargetType 和 RunAsynchronously。 它们不是工作流参数,因此不会在 CacheMetadata 方法中的 InvokeMethod 活动的 GenericTypeArguments 集合中注册。