Пример #1
0
        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);
        }
Пример #2
0
 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;
 }