using System.Collections; using System.ComponentModel.DataAnnotations; namespace Masuit.Tools.Core.Validator; /// /// 元素个数校验 /// public class MinItemsCountAttribute : ValidationAttribute { private int MinItems { get; } /// /// 最小个数 /// /// public MinItemsCountAttribute(int value) { MinItems = value; } /// /// 校验 /// /// /// public override bool IsValid(object value) { if (value is null) { return false; } if (value is ICollection sources) { return sources.Count >= MinItems; } int num = 0; if (value is IEnumerable source) { var enumerator = source.GetEnumerator(); while (enumerator.MoveNext()) { checked { ++num; if (num >= MinItems) { return true; } } } } return false; } }