Files
zeling_v2/Assets/Scripts/Core/Validation/IValidatable.cs
2026-05-12 15:34:08 +08:00

35 lines
1.2 KiB
C#

using System.Collections.Generic;
namespace BaseGames.Core
{
public enum ValidationSeverity { Error, Warning }
/// <summary>
/// 单条验证结果:严重级别 + 消息文本。
/// 使用静态工厂方法 Error() / Warning() 创建。
/// </summary>
public readonly struct ValidationResult
{
public ValidationSeverity Severity { get; }
public string Message { get; }
public ValidationResult(ValidationSeverity severity, string message)
{
Severity = severity;
Message = message;
}
public static ValidationResult Error(string message) => new(ValidationSeverity.Error, message);
public static ValidationResult Warning(string message) => new(ValidationSeverity.Warning, message);
}
/// <summary>
/// 可验证 ScriptableObject 接口。实现此接口的 SO 会被 SOValidationRunner 自动扫描。
/// Validate() 返回零条结果 = 数据合法;否则每条按 <see cref="ValidationResult.Severity"/> 分类报告。
/// </summary>
public interface IValidatable
{
IEnumerable<ValidationResult> Validate();
}
}