GFramework/GFramework.Game/Config/YamlConfigTextSerializer.cs
GeWuYou e40703c202 feat(config): 添加 YAML 配置文件 JSON Schema 校验器
- 实现了 YAML 配置与 JSON Schema 的运行时校验功能
- 支持嵌套对象、对象数组、标量数组的递归校验
- 集成了 enum 和引用约束的深度校验机制
- 实现了 multipleOf、uniqueItems 等扩展约束规则
- 添加了跨表引用收集和校验能力
- 提供了异步和同步两种加载校验接口
- 支持 minContains/maxContains 数组匹配计数规则
- 实现了 minProperties/maxProperties 对象属性数量校验
- 集成了日期时间、邮箱、URI 等字符串格式校验
- 提供了详细的错误诊断信息和定位功能
2026-04-12 14:28:31 +08:00

31 lines
1.1 KiB
C#

namespace GFramework.Game.Config;
/// <summary>
/// 提供可复用的 YAML 文本序列化入口,供生成配置绑定与宿主写回流程共享。
/// </summary>
public static class YamlConfigTextSerializer
{
private static readonly ISerializer Serializer = new SerializerBuilder()
.WithNamingConvention(CamelCaseNamingConvention.Instance)
.DisableAliases()
.ConfigureDefaultValuesHandling(DefaultValuesHandling.Preserve)
.Build();
/// <summary>
/// 将配置对象序列化为 YAML 文本。
/// </summary>
/// <typeparam name="TValue">配置对象类型。</typeparam>
/// <param name="value">要序列化的配置对象。</param>
/// <returns>带尾随换行的 YAML 文本。</returns>
/// <exception cref="ArgumentNullException">当 <paramref name="value" /> 为 <see langword="null" /> 时抛出。</exception>
public static string Serialize<TValue>(TValue value)
{
ArgumentNullException.ThrowIfNull(value);
var yaml = Serializer.Serialize(value);
return yaml.EndsWith('\n')
? yaml
: $"{yaml}{Environment.NewLine}";
}
}