public static int CompareTo(Type typeOfValue, object value, Type typeOfValueToCompare, object valueToCompare) { if (TypeJudge.IsNumericType(typeOfValue) && TypeJudge.IsNumericType(typeOfValueToCompare)) { var valueNumeric = Convert.ToDecimal(value); var valueNumericToCompare = Convert.ToDecimal(valueToCompare); return(valueNumeric.CompareTo(valueNumericToCompare)); } if (value is char valueChar && valueToCompare is char valueCharToCompare) { return(valueChar.CompareTo(valueCharToCompare)); } if (TypeJudge.IsEnumType(typeOfValue) && TypeJudge.IsEnumType(typeOfValueToCompare)) { var valueEnumName = Enum.GetName(typeOfValue, value); var valueEnumNameToCompare = Enum.GetName(typeOfValueToCompare, valueToCompare); return(string.Compare(valueEnumName, valueEnumNameToCompare, StringComparison.Ordinal)); } long valueTimeStamp = ToLongTimeTicks(value); long valueTimeStampToCompare = ToLongTimeTicks(valueToCompare, -1L); return(valueTimeStamp.CompareTo(valueTimeStampToCompare)); }
public static bool Valid(Type typeOfValue, object value, Type typeOfValueToCompare, object valueToCompare) { if (TypeJudge.IsNumericType(typeOfValue) && TypeJudge.IsNumericType(typeOfValueToCompare)) { var valueNumeric = Convert.ToDecimal(value); var valueNumericToCompare = Convert.ToDecimal(valueToCompare); return(valueNumeric == valueNumericToCompare); } if (value is char valueChar && valueToCompare is char valueCharToCompare) { return(valueChar == valueCharToCompare); } if (TypeJudge.IsEnumType(typeOfValue) && TypeJudge.IsEnumType(typeOfValueToCompare)) { var valueEnumName = Enum.GetName(typeOfValue, value); var valueEnumNameToCompare = Enum.GetName(typeOfValueToCompare, valueToCompare); return(valueEnumName == valueEnumNameToCompare); } long valueTimeStamp = ToLongTimeTicks(value); long valueTimeStampToCompare = ToLongTimeTicks(valueToCompare, -1L); return(valueTimeStamp == valueTimeStampToCompare); }
public static void RejectSimpleType(Type type) { if (type is null) { throw new ArgumentNullException(nameof(type)); } if (TypeJudge.IsEnumType(type)) { throw new ArgumentException("ObjectVisitor does not support direct processing of enum types.", nameof(type)); } if (TypeJudge.IsNumericType(type)) { throw new ArgumentException("ObjectVisitor does not support direct processing of numeric types.", nameof(type)); } if (type.IsPrimitive) { throw new ArgumentException("ObjectVisitor does not support direct processing of primitive types.", nameof(type)); } if (type == typeof(string) || type == typeof(Guid) || type == typeof(Type)) { throw new ArgumentException("ObjectVisitor does not support direct processing of String, Type or Guid.", nameof(type)); } }