using System; using System.Collections.Generic; using UnityEditor; namespace NaughtyAttributes.Editor { public abstract class PropertyValidatorBase { public abstract void ValidateProperty(SerializedProperty property); } public static class ValidatorAttributeExtensions { private static Dictionary _validatorsByAttributeType; static ValidatorAttributeExtensions() { _validatorsByAttributeType = new Dictionary(); _validatorsByAttributeType[typeof(MinValueAttribute)] = new MinValuePropertyValidator(); _validatorsByAttributeType[typeof(MaxValueAttribute)] = new MaxValuePropertyValidator(); _validatorsByAttributeType[typeof(RequiredAttribute)] = new RequiredPropertyValidator(); _validatorsByAttributeType[typeof(ValidateInputAttribute)] = new ValidateInputPropertyValidator(); } public static PropertyValidatorBase GetValidator(this ValidatorAttribute attr) { PropertyValidatorBase validator; if (_validatorsByAttributeType.TryGetValue(attr.GetType(), out validator)) { return validator; } else { return null; } } } }