using System.ComponentModel.DataAnnotations; namespace ShrlAlgoToolkit.RevitAddins.Attributes; [AttributeUsage(AttributeTargets.Property | AttributeTargets.Field | AttributeTargets.Parameter)] public sealed class GreaterThanAttribute : ValidationAttribute { public GreaterThanAttribute(string propertyName) { PropertyName = propertyName; } public string PropertyName { get; } protected override ValidationResult IsValid(object value, ValidationContext validationContext) { object instance = validationContext.ObjectInstance, otherValue = instance.GetType().GetProperty(PropertyName).GetValue(instance); return ((IComparable)value).CompareTo(otherValue) > 0 ? ValidationResult.Success : new($"当前值小于{value}"); } }