public TypeDependentValueValidator(TypeCompareOptions option, Type instanceType, string internalStaticProperty)
            : base(option, internalStaticProperty)
        {
            if ( instanceType == null )
                throw new ArgumentNullException("instanceType");

            InstanceType = instanceType;
        }
        /// <summary>
        ///     
        /// </summary>
        /// <param name="propertyName">The value of the property to compare</param>
        /// <param name="value">expected value</param>
        /// <param name="option">signal</param>
        public IgnoreLocalValidatorsAttribute(string propertyName, object value, TypeCompareOptions option)
        {
            if ( propertyName == null )
                throw new ArgumentNullException("propertyName");

            PropertyName = propertyName;
            PropertyValue = value;
            Option = option;
        }
Exemplo n.º 3
0
        public TypeDependentValidatorBase(TypeCompareOptions option, string otherPropertyName)
        {
            Option = option;

            if ( string.IsNullOrEmpty(otherPropertyName) )
                throw new ArgumentNullException("otherPropertyName");

            OtherPropertyName = otherPropertyName;
        }
Exemplo n.º 4
0
        public static bool Compare(object obj1, object obj2, TypeCompareOptions option)
        {
            bool? returnVal = null;     // without any state

            if ( option == TypeCompareOptions.Equal && obj1 == null && obj2 != null )
                returnVal = false;

            if ( returnVal == null && option == TypeCompareOptions.NotEqual && obj1 == null && obj2 == null )
                returnVal = false;

            if ( returnVal == null && option == TypeCompareOptions.Equal && obj1 == null && obj2 == null )
                returnVal = true;

            if ( returnVal == null && option == TypeCompareOptions.NotEqual && ((obj1 == null && obj2 != null) || (obj1 != null && obj2 == null)) )
                returnVal = true;

            if ( returnVal != null )
                return returnVal.Value;

            else
            {
                if ( obj1 == null && obj2 == null )
                    return true;
            }

            // Two types must be comparable to call compareTo method.
            IComparable original = (IComparable) obj1;
            IComparable reference = (IComparable) obj2;

            // property types are equal, we can compare.
            switch ( option )
            {
                case TypeCompareOptions.Equal:
                    if ( !(original.CompareTo(reference) == 0) )
                        return false;
                    break;

                case TypeCompareOptions.Greater:
                    if ( !(original.CompareTo(reference) > 0) )
                        return false;
                    break;

                case TypeCompareOptions.GreaterOrEqual:
                    if ( !(original.CompareTo(reference) >= 0) )
                        return false;
                    break;

                case TypeCompareOptions.Less:
                    if ( !(original.CompareTo(reference) < 0) )
                        return false;
                    break;

                case TypeCompareOptions.LessOrEqual:
                    if ( !(original.CompareTo(reference) <= 0) )
                        return false;
                    break;

                case TypeCompareOptions.NotEqual:
                    if ( !(original.CompareTo(reference) != 0) )
                        return false;
                    break;

                default:
                    throw new InvalidOperationException("option not handled by application");
            }

            return true;
        }
 public TypeDependentPropertyValidator(TypeCompareOptions option, string otherPropertyName)
     : base(option, otherPropertyName)
 {
 }