using System; using System.Collections; using ChadSoft.Validators; namespace ChadSoft.Validation { [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field, AllowMultiple = false, Inherited = true)] public class RangeValidatorAttribute : ValidatorAttribute { private readonly object _minVal; private readonly object _maxVal; public RangeValidatorAttribute(object minVal, object maxVal) { if (minVal == null) throw new ArgumentNullException("minVal"); if (maxVal == null) throw new ArgumentNullException("maxVal"); if (minVal.GetType() != maxVal.GetType()) throw new ArgumentException("Min and Max values must be the same type."); _minVal = minVal; _maxVal = maxVal; } public override bool IsValid(object val) { if(!base.IsValid(val)) return false; return Comparer.Default.Compare(val, _minVal) != -1 && Comparer.Default.Compare(val, _maxVal) != 1; } } }