namespace GFramework.Game.Config; /// /// 表示一个数组节点上声明的元素数量、去重与 contains 匹配计数约束。 /// 该模型与标量约束拆分保存,避免数组节点继续共享不适用的标量字段。 /// internal sealed class YamlConfigArrayConstraints { /// /// 初始化数组约束模型。 /// /// 最小元素数量约束。 /// 最大元素数量约束。 /// 是否要求数组元素唯一。 /// 数组 contains 约束;未声明时为空。 /// 为负数时抛出。 /// 大于 时抛出。 public YamlConfigArrayConstraints( int? minItems, int? maxItems, bool uniqueItems, YamlConfigArrayContainsConstraints? containsConstraints) { if (minItems is < 0) { throw new ArgumentOutOfRangeException(nameof(minItems), minItems, "minItems 不能为负数。"); } if (maxItems is < 0) { throw new ArgumentOutOfRangeException(nameof(maxItems), maxItems, "maxItems 不能为负数。"); } if (minItems.HasValue && maxItems.HasValue && minItems.Value > maxItems.Value) { throw new ArgumentException("minItems 不能大于 maxItems。", nameof(minItems)); } MinItems = minItems; MaxItems = maxItems; UniqueItems = uniqueItems; ContainsConstraints = containsConstraints; } /// /// 获取最小元素数量约束。 /// public int? MinItems { get; } /// /// 获取最大元素数量约束。 /// public int? MaxItems { get; } /// /// 获取是否要求数组元素唯一。 /// public bool UniqueItems { get; } /// /// 获取数组 contains 约束;未声明时返回空。 /// public YamlConfigArrayContainsConstraints? ContainsConstraints { get; } }