public static object[] ConvertParameters(ParameterInfo[] arrayOfParameterInfo, object[] parameters) { if (arrayOfParameterInfo.Length != parameters.Length) { return(null); } for (int i = 0; i < arrayOfParameterInfo.Length; i++) { object value = parameters[i]; if (value == null) { continue; } ParameterInfo parameterInfo = arrayOfParameterInfo[i]; Type typePar = parameterInfo.ParameterType; if (value is JValue) { value = ((JValue)value).Value; parameters[i] = value; } Type typeObj = value.GetType(); if (!typePar.IsAssignableFrom(typeObj)) { parameters[i] = WUtil.ToObjectOf(value, typePar); } } return(parameters); }