mirror of
https://github.com/GeWuYou/GFramework.git
synced 2026-05-07 17:21:16 +08:00
- 实现基于 YAML 的配置加载器支持 - 添加 JSON Schema 结构验证功能 - 实现一对象一文件的目录组织方式 - 提供运行时只读查询接口 - 添加 Source Generator 生成配置类型和表包装 - 实现 VS Code 插件配置浏览和编辑功能 - 添加开发期热重载支持 - 实现跨表引用校验机制 - 提供完整的配置系统文档说明
57 lines
2.0 KiB
C#
57 lines
2.0 KiB
C#
namespace GFramework.Game.Config;
|
|
|
|
/// <summary>
|
|
/// 描述一个 YAML 配置表注册项的参数集合。
|
|
/// 该选项对象用于替代不断增加的位置参数重载,
|
|
/// 让消费者在启用 schema 校验、主键比较器或未来扩展项时仍能保持调用点可读。
|
|
/// </summary>
|
|
/// <typeparam name="TKey">配置主键类型。</typeparam>
|
|
/// <typeparam name="TValue">配置值类型。</typeparam>
|
|
public sealed class YamlConfigTableRegistrationOptions<TKey, TValue>
|
|
where TKey : notnull
|
|
{
|
|
/// <summary>
|
|
/// 使用最小必需参数创建配置表注册选项。
|
|
/// </summary>
|
|
/// <param name="tableName">运行时配置表名称。</param>
|
|
/// <param name="relativePath">相对配置根目录的子目录。</param>
|
|
/// <param name="keySelector">配置项主键提取器。</param>
|
|
/// <exception cref="ArgumentNullException">当 <paramref name="keySelector" /> 为 null 时抛出。</exception>
|
|
public YamlConfigTableRegistrationOptions(
|
|
string tableName,
|
|
string relativePath,
|
|
Func<TValue, TKey> keySelector)
|
|
{
|
|
ArgumentNullException.ThrowIfNull(keySelector);
|
|
|
|
TableName = tableName;
|
|
RelativePath = relativePath;
|
|
KeySelector = keySelector;
|
|
}
|
|
|
|
/// <summary>
|
|
/// 获取运行时配置表名称。
|
|
/// </summary>
|
|
public string TableName { get; }
|
|
|
|
/// <summary>
|
|
/// 获取相对配置根目录的子目录。
|
|
/// </summary>
|
|
public string RelativePath { get; }
|
|
|
|
/// <summary>
|
|
/// 获取相对配置根目录的 schema 文件路径。
|
|
/// 当该值为空时,当前注册项不会启用 schema 校验。
|
|
/// </summary>
|
|
public string? SchemaRelativePath { get; init; }
|
|
|
|
/// <summary>
|
|
/// 获取配置项主键提取器。
|
|
/// </summary>
|
|
public Func<TValue, TKey> KeySelector { get; }
|
|
|
|
/// <summary>
|
|
/// 获取可选的主键比较器。
|
|
/// </summary>
|
|
public IEqualityComparer<TKey>? Comparer { get; init; }
|
|
} |