private ValidationResult ValidateProperty(object target, ConfigurationPrimitivePropertyModel propertyModel)
        {
            var errors        = new List <string>();
            var propertyValue = propertyModel.GetPropertyValue(target);

            if (propertyValue == null)
            {
                return(propertyModel.ValidationRules.IsRequired
                    ? new ValidationResult(ValidationStrings.RequiredPropertyNotFound(propertyModel.ConfigurationPropertyName))
                    : ValidationResult.CreateValid());
            }
            if (propertyModel.ValidationRules.Min != null && propertyModel.ValidationRules.Min.CompareTo(propertyValue) > 0)
            {
                errors.Add(ValidationStrings.LessThanMin(propertyModel.ConfigurationPropertyName, propertyModel.ValidationRules.Min));
            }
            if (propertyModel.ValidationRules.Max != null && propertyModel.ValidationRules.Max.CompareTo(propertyValue) < 0)
            {
                errors.Add(ValidationStrings.GreaterThanMax(propertyModel.ConfigurationPropertyName, propertyModel.ValidationRules.Max));
            }
            if (propertyValue is string stringProperty)
            {
                ValidateStringProperty(stringProperty, propertyModel, errors);
            }
            return(new ValidationResult(errors));
        }