protected override ValidationResult IsValid(object value, ValidationContext validationContext)
        {
            DateTime currentDateTime;

            if (DateTime.TryParse(value.ToString(), out currentDateTime))
            {
                if (Mode == DateValidatorMode.OverOrEqualToProperty)
                {
                    DateTime refPropertyDate;
                    Object   instance = validationContext.ObjectInstance;
                    Type     type     = instance.GetType();
                    Object   data     = type.GetProperty(this.RefProperty).GetValue(instance, null);

                    if (data != null && data is DateTime)
                    {
                        refPropertyDate = (DateTime)data;
                    }
                    else
                    {
                        return(new ValidationResult("Property reference date is null or not DateTime value"));
                    }

                    if (DateTime.Compare(currentDateTime, refPropertyDate) >= 0)
                    {
                        return(ValidationResult.Success);
                    }
                    else
                    {
                        return(new ValidationResult("Current DateTime is lower than min property"));
                    }
                }
                else if (Mode == DateValidatorMode.OverNow)
                {
                    DateTime minDateTime;
                    if (MinDate.Equals("Now"))
                    {
                        minDateTime = DateTime.Now;
                    }
                    else
                    {
                        DateTime dt;
                        if (!DateTime.TryParse(MinDate, out dt))
                        {
                            return(new ValidationResult("Cannot parse reference min date to date"));
                        }
                        else
                        {
                            minDateTime = dt;
                        }
                    }

                    if (DateTime.Compare(currentDateTime, minDateTime.Date) >= 0)
                    {
                        return(ValidationResult.Success);
                    }
                    else
                    {
                        return(new ValidationResult("Current DateTime is lower than Now or min DateTime"));
                    }
                }
            }
            else
            {
                return(new ValidationResult("Cannot parse to date"));
            }

            return(new ValidationResult("Error"));
        }