Microsoft.JScript.FunctionObject.ConvertArguments C# (CSharp) Method

ConvertArguments() private method

private ConvertArguments ( Object args, Object newargs, int offset, int length, int n, Binder binder, CultureInfo culture ) : void
args Object
newargs Object
offset int
length int
n int
binder Binder
culture System.Globalization.CultureInfo
return void
      private void ConvertArguments(Object[] args, Object[] newargs, int offset, int length, int n, Binder binder, CultureInfo culture){
        ParameterInfo[] pars = this.parameterInfos;
        if (pars != null){
          for (int i = 0, j = offset; i < n; i++, j++){
            Type t = pars[j].ParameterType;
            if (i == n-1 && CustomAttribute.IsDefined(pars[j], typeof(ParamArrayAttribute), false)){
              int k = length-i; if (k < 0) k = 0;
              newargs[j] = FunctionObject.CopyToNewParamArray(t.GetElementType(), k, args, i, binder, culture);
              return;
            }
            Object argval = i < length ? args[i] : null;
            if (t == Typeob.Object)
              newargs[j] = argval;
            else if (binder != null)
              newargs[j] = binder.ChangeType(argval, t, culture);
            else
              newargs[j] = Convert.CoerceT(argval, t);
          }
        }else{
          ParameterDeclaration[] pds = this.parameter_declarations;
          for (int i = 0, j = offset; i < n; i++, j++){
            IReflect ir = pds[i].ParameterIReflect;
            if (i == n-1 && CustomAttribute.IsDefined(pds[j], typeof(ParamArrayAttribute), false)){
              int k = length-i; if (k < 0) k = 0;
              newargs[j] = FunctionObject.CopyToNewParamArray(((TypedArray)ir).elementType, k, args, i);
              return;
            }
            Object argval = i < length ? args[i] : null;
            if (ir == Typeob.Object){
              newargs[j] = argval; continue;
            }
            if (ir is ClassScope)
              newargs[j] = Convert.Coerce(argval, ir);
            else if (binder != null)
              newargs[j] = binder.ChangeType(argval, Convert.ToType(ir), culture);
            else
              newargs[j] = Convert.CoerceT(argval, Convert.ToType(ir));
          }
        }
      }