private bool IsParameterMatch(Type parameterType, SmartObject smarty, out object convertedValue) { object value = smarty.Value; if (value == null) { convertedValue = value; return(parameterType.IsClass); } if (parameterType.IsAssignableFrom(smarty.Type)) { convertedValue = value; return(true); } if (smarty.CanBeInt32 && parameterType.IsAssignableFrom(_int32Type)) { convertedValue = (int)(double)value; return(true); } if (smarty.CanBeInt64 && parameterType.IsAssignableFrom(_int64Type)) { convertedValue = (long)(double)value; return(true); } if (parameterType.IsArray && smarty.CanBeArray() && parameterType.IsAssignableFrom(smarty.ArrayType)) { convertedValue = smarty.TypedArray; return(true); } if (parameterType.IsArray && smarty.IsEmptyArray) { Type itemType = Type.GetType(parameterType.FullName.Substring(0, parameterType.FullName.Length - 2)); convertedValue = ((ArrayList)smarty.Value).ToArray(itemType); return(true); } if (parameterType.IsEnum && smarty.CanBeInt32 && Enum.GetUnderlyingType(parameterType).IsAssignableFrom(_int32Type)) { convertedValue = Enum.Parse(parameterType, ((int)(double)value).ToString()); return(true); } if (smarty.CanBeClass() && parameterType.IsAssignableFrom(smarty.ClassType)) { convertedValue = smarty; return(true); } convertedValue = null; return(false); }
private bool IsParameterMatch(Type parameterType, SmartObject smarty, out object convertedValue) { object value = smarty.Value; if (value == null) { convertedValue = value; return parameterType.IsClass; } if (parameterType.IsAssignableFrom(smarty.Type)) { convertedValue = value; return true; } if (smarty.CanBeInt32 && parameterType.IsAssignableFrom(_int32Type)) { convertedValue = (int)(double)value; return true; } if (smarty.CanBeInt64 && parameterType.IsAssignableFrom(_int64Type)) { convertedValue = (long)(double)value; return true; } if (parameterType.IsArray && smarty.CanBeArray() && parameterType.IsAssignableFrom(smarty.ArrayType)) { convertedValue = smarty.TypedArray; return true; } if (parameterType.IsArray && smarty.IsEmptyArray) { Type itemType = Type.GetType(parameterType.FullName.Substring(0, parameterType.FullName.Length - 2)); convertedValue = ((ArrayList)smarty.Value).ToArray(itemType); return true; } if (parameterType.IsEnum && smarty.CanBeInt32 && Enum.GetUnderlyingType(parameterType).IsAssignableFrom(_int32Type)) { convertedValue = Enum.Parse(parameterType, ((int)(double)value).ToString()); return true; } if (smarty.CanBeClass() && parameterType.IsAssignableFrom(smarty.ClassType)) { convertedValue = smarty; return true; } convertedValue = null; return false; }