InvokeMethod アクティビティ デザイナー
InvokeMethod デザイナーは、InvokeMethod アクティビティを作成して構成するために使用します。
InvokeMethod アクティビティ
InvokeMethod は、指定されたオブジェクトまたは型のパブリック メソッドを呼び出します。
InvokeMethod アクティビティ デザイナーを使用する
[ツールボックス] の [プリミティブ] カテゴリで、InvokeMethod アクティビティ デザイナーにアクセスします。 InvokeMethod アクティビティ デザイナーは、[ツールボックス] からドラッグして、アクティビティが通常配置される任意のワークフロー デザイナー画面 (Sequence 内など) にドロップできます。 アクティビティ デザイナーをドロップすると、InvokeMethod アクティビティが InvokeMethod の既定の DisplayName で作成されます。 DisplayName は、InvokeMethod アクティビティ デザイナーのヘッダーか、プロパティ グリッドの [DisplayName] ボックスで編集できます。
InvokeMethod のプロパティ
次の表に、InvokeMethod のプロパティと、それらがデザイナーでどのように使用されるかを示します。 これらのプロパティは、プロパティ グリッドで編集できます。また、その一部はワークフロー デザイナー画面で編集できます。
プロパティ名 | 必須 | 使用 |
---|---|---|
DisplayName | False | InvokeMethod アクティビティの表示名。 既定値は InvokeMethod です。 DisplayName は厳密には必須ではありませんが、使用することをお勧めします。 |
MethodName | True | アクティビティの実行時に呼び出すメソッドの名前。 呼び出されるメソッドは、public と宣言する必要があります。 このプロパティは、デザイナー画面で設定できる必須のプロパティです。 |
Parameters | False | 呼び出されたメソッドのパラメーター コレクション。 パラメーターは、メソッド シグネチャ内で出現する順序でコレクションに追加する必要があります。 このプロパティを設定できる [パラメーター] ダイアログを表示するには、プロパティ グリッドで [パラメーター] フィールドの省略記号ボタンをクリックします。 [引数の作成] ボタンをクリックしてパラメーターを追加します。 |
Result | False | メソッド呼び出しの戻り値。 |
RunAsynchronously | True | メソッドが非同期で呼び出されるかどうかを指定します。 既定値は Falseです。 |
TargetObject | False | 呼び出すメソッドを格納するオブジェクト。 このプロパティは、デザイナー画面で設定することもできます。 TargetObject および TargetType のいずれかを設定する必要があります。 |
TargetType | False | TargetObject の型。 このプロパティは、デザイナー画面で編集できます。 このプロパティは、メソッド呼び出しが静的である場合にのみ設定する必要があります。 |
パラメーターを C# の out パラメーターとして渡すには (例: Method1(out myParam))
)、InOutArgument の代わりに OutArgument を使用します。
TargetObject または Result という引数があるメソッドは、InvokeMethod アクティビティを使用して呼び出すことはできません。 これは、InvokeMethod アクティビティによって GenericTypeArguments、TargetObject、および Result が CacheMetadata に登録されるためです。
CacheMetadata にパラメーターを登録するアルゴリズムは次のとおりです。
TargetObject 引数を登録します。
Result 引数を登録します。
Parameters コレクションを繰り返し処理し、各引数を登録します。
結果の例外の種類は InvalidWorkflowException となり、メッセージの内容は、"'InvokeMethod': 名前が 'TargetObject' の変数 RuntimeArgument または DelegateArgument は既に存在します" となります。 名前は、環境スコープ内で一意であることが必要です。
この制限は、TargetType と RunAsynchronously には適用されません。 これらはワークフロー引数ではないため、CacheMetadata メソッドでの InvokeMethod アクティビティの GenericTypeArguments コレクションに登録されません。