using System; namespace Module.ProjectValidator { [AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = true)] public sealed class RequiredAttribute : Attribute { private readonly EValidatorSeverity _severity; public RequiredAttribute() { _severity = EValidatorSeverity.Error; } public RequiredAttribute(EValidatorSeverity severity) { _severity = severity; } public sealed class Validator : IAttributeValidator { public ValidatorResult Validate(RequiredAttribute attribute, object value) { var isValid = value is UnityEngine.Object obj ? obj != null : value != null; return isValid ? ValidatorResult.Valid : ValidatorResult.Create(attribute._severity, "Value is Null"); } } } }