/// <summary> /// フロー インターフェイスを呼び出します。 /// </summary> /// <param name="module">呼び出しに用いるモジュール オブジェクト。</param> /// <param name="input">フィルタ処理の入力として与えるストレージ オブジェクトのシーケンス。</param> /// <param name="session">ストレージ オブジェクトの入出力先として使用するストレージ セッション。</param> /// <param name="parameter">処理のパラメータ。</param> /// <param name="arguments">処理の引数のディクショナリ。</param> /// <param name="variables">リクエスト間で受け渡される変数のディクショナリ。</param> /// <returns>処理の結果。</returns> public Object Invoke( FlowModule module, Object input = null, StorageSession session = null, String parameter = null, IDictionary<String, String> arguments = null, IDictionary<String, Object> variables = null ) { LinkedList<Object> args = new LinkedList<Object>(); if(this.RequiresInput) { args.AddLast(input); } if(this.RequiresSession) { args.AddLast(session); } if(this.RequiresParameter) { args.AddLast(parameter ?? ""); } if(this.RequiresArguments) { args.AddLast(arguments ?? new Dictionary<String, String>()); } if(this.HandlesVariables) { args.AddLast(variables ?? new Dictionary<String, Object>()); } Object output = this._method.Invoke(module, args.ToArray()); if (session != null) { session.Update(); } return output; }