private bool ValidCore(object value, out string message) { message = null; if (Member.MemberType.IsValueType && _typeOfValueToCompare.IsValueType) { if (ValueTypeEqualCalculator.CompareTo(Member.MemberType, value, _typeOfValueToCompare, _valueToCompare) <= 0) { return(true); } } else if (value is IComparable c1 && _valueToCompare is IComparable c2) { if (c1.CompareTo(c2) <= 0) { return(true); } } message = "Neither the given value nor the value being compared can be converted to IComparable."; return(false); }
/// <summary> /// Impl of valid ops. /// </summary> /// <param name="value"></param> /// <param name="valueToCompare"></param> /// <param name="typeOfValueToCompare"></param> /// <param name="message"></param> /// <returns></returns> protected override bool IsValidImpl(object value, object valueToCompare, Type typeOfValueToCompare, out string message) { message = null; if (VerifiableMember.MemberType.IsValueType && typeOfValueToCompare.IsValueType) { if (ValueTypeEqualCalculator.CompareTo(VerifiableMember.MemberType, value, typeOfValueToCompare, valueToCompare) <= 0) { return(true); } } else if (value is IComparable c1 && valueToCompare is IComparable c2) { if (c1.CompareTo(c2) <= 0) { return(true); } } message = "Neither the given value nor the value being compared can be converted to IComparable."; return(false); }