/// <summary> /// 指定した引数に最も適合するメソッドのオーバーロードを検索します /// </summary> /// <param name="arguments">引数</param> /// <returns>最も適合するメソッドのオーバーロード</returns> /// <exception cref="ArgumentException"> /// 指定した引数に適合するメソッドのオーバーロードが見つからなかった場合に発生します。 /// </exception> protected System.Reflection.MethodInfo SelectOverload(JavaScript.Array arguments) { float comp0, compat = float.NegativeInfinity; System.Reflection.MethodInfo m0, m = null; int iM = this.methods.Length; int w = 0; //重なり for (int i = 0; i < iM; i++) { m0 = this.methods[i]; comp0 = FunctionBase.ConvertParamsCompat(m0, arguments); if (comp0 < compat) { continue; } if (comp0 == compat) { w++; continue; } w = 1; compat = comp0; m = m0; } if (compat == float.NegativeInfinity) { throw new System.ArgumentException(OVERLOAD_NONE, "arguments"); } if (w > 1) { throw new System.ArgumentException(OVERLOAD_AMBIGUOUS, "arguments"); } return(m); }