namespace GFramework.Game.Config; /// /// 表示数组节点声明的 contains 匹配约束。 /// 该模型把 contains 子 schema 与匹配数量边界聚合在一起,避免数组节点再额外散落多组相关成员。 /// internal sealed class YamlConfigArrayContainsConstraints { /// /// 初始化数组 contains 约束模型。 /// /// contains 子 schema。 /// 最小匹配数量;为 时按 JSON Schema 语义默认 1。 /// 最大匹配数量。 /// 时抛出。 /// 为负数时抛出。 /// 大于 时抛出。 public YamlConfigArrayContainsConstraints( YamlConfigSchemaNode containsNode, int? minContains, int? maxContains) { ArgumentNullException.ThrowIfNull(containsNode); if (minContains is < 0) { throw new ArgumentOutOfRangeException(nameof(minContains), minContains, "minContains 不能为负数。"); } if (maxContains is < 0) { throw new ArgumentOutOfRangeException(nameof(maxContains), maxContains, "maxContains 不能为负数。"); } if (minContains.HasValue && maxContains.HasValue && minContains.Value > maxContains.Value) { throw new ArgumentException("minContains 不能大于 maxContains。", nameof(minContains)); } ContainsNode = containsNode; MinContains = minContains; MaxContains = maxContains; } /// /// 获取 contains 子 schema。 /// public YamlConfigSchemaNode ContainsNode { get; } /// /// 获取最小匹配数量;未显式声明时返回空,由调用方按默认值 1 解释。 /// public int? MinContains { get; } /// /// 获取最大匹配数量。 /// public int? MaxContains { get; } }