NotSameEnumValueValidator

using System;

using Castle.Components.Validator;

namespace BlogCode.MonoRail.Validators
{
    public class NotSameEnumValueValidator : NotSameValueValidator
    {
        public NotSameEnumValueValidator( object value ) : base( value )
        {
        }
    }

    public class ValidateNotSameEnumValueAttribute : ValidateNotSameValueAttribute
    {
        private readonly string _value;

        public ValidateNotSameEnumValueAttribute( Type enumType, object mustNotBeThisValue, string errorMessage ) : base( enumType, mustNotBeThisValue, errorMessage )
        {
            _value = Enum.GetName( enumType, mustNotBeThisValue );
        }

        public override IValidator Build()
        {
            IValidator validator = new NotSameEnumValueValidator( _value );
            ConfigureValidatorMessage( validator );
            return validator;
        }
    }
}