Tri-Inspector/Editor/TriValidator.cs

46 lines
1.2 KiB
C#

using System;
using JetBrains.Annotations;
using UnityEditor;
namespace TriInspector
{
public abstract class TriValidator
{
internal bool ApplyOnArrayElement { get; set; }
[PublicAPI]
public virtual void Initialize(TriPropertyDefinition propertyDefinition)
{
}
[PublicAPI]
public abstract TriValidationResult Validate(TriProperty property);
}
public abstract class TriAttributeValidator : TriValidator
{
internal Attribute RawAttribute { get; set; }
}
public abstract class TriAttributeValidator<TAttribute> : TriAttributeValidator
where TAttribute : Attribute
{
[PublicAPI]
public TAttribute Attribute => (TAttribute) RawAttribute;
}
public abstract class TriValueValidator : TriValidator
{
}
public abstract class TriValueValidator<T> : TriValueValidator
{
public sealed override TriValidationResult Validate(TriProperty property)
{
return Validate(new TriValue<T>(property));
}
[PublicAPI]
public abstract TriValidationResult Validate(TriValue<T> propertyValue);
}
}