using System;
namespace XericUI.ReflectionUIGenerator
{
///
/// 属性检查标记
/// 替代旧的 Required/NotEmpty 标记,扩展范围验证、警告、无效值检查
///
/// 使用示例:
/// [XuiavrgPropertyCheck(Required = true)] public string name;
/// [XuiavrgPropertyCheck(Required = true, ValidateReasonable = true)] public float speed;
/// [XuiavrgPropertyCheck(CheckKey = "MyCustomKey", ValidateWarning = true)] public int score;
///
[AttributeUsage(AttributeTargets.Field | AttributeTargets.Property, AllowMultiple = false)]
public class XuiavrgPropertyCheckAttribute : Attribute, IXuiavrgAttribute
{
///
/// 判断依据标识
/// 默认使用类型全称(如 "System.Single")与 AvrgValueRangeConfig 中的条目匹配
/// 也可自定义其他名称
///
public string CheckKey { get; set; }
/// 是否必填
public bool Required { get; set; }
/// 是否启用合理值范围检查
public bool ValidateReasonable { get; set; }
/// 是否启用警告状态检查
public bool ValidateWarning { get; set; }
/// 是否启用无效值状态检查
public bool ValidateInvalid { get; set; }
///
/// 创建必填检查标记
///
/// 是否必填
/// 是否启用合理值范围检查
/// 是否启用警告状态检查
/// 是否启用无效值状态检查
public XuiavrgPropertyCheckAttribute(bool required = true, bool validateReasonable = false, bool validateWarning = false, bool validateInvalid = false)
{
Required = required;
ValidateReasonable = validateReasonable;
ValidateWarning = validateWarning;
ValidateInvalid = validateInvalid;
}
public void BindMetaData(AvrgMemberMetaData metaData)
{
metaData.Required = Required;
// 如果指定了 CheckKey,使用它;否则保持元数据默认(元数据默认用 Type.FullName)
if (!string.IsNullOrEmpty(CheckKey))
metaData.PropertyCheckKey = CheckKey;
metaData.ValidateReasonable = ValidateReasonable;
metaData.ValidateWarning = ValidateWarning;
metaData.ValidateInvalid = ValidateInvalid;
}
}
}