GFramework/GFramework.Game/Config/ConfigLoadExceptionFactory.cs
GeWuYou 12ce31f82a feat(game): 添加游戏内容配置系统
- 实现基于 YAML 的配置文件加载功能
- 集成 JSON Schema 结构验证和类型检查
- 提供一对象一文件的目录组织方式
- 支持运行时只读查询和类型安全访问
- 实现 Source Generator 生成配置类型和表包装
- 添加 VS Code 插件提供配置浏览和编辑功能
- 支持跨表引用校验和依赖关系管理
- 实现开发期热重载功能,支持配置变更自动刷新
- 提供完整的配置加载、验证、注册和访问接口
2026-04-03 12:00:32 +08:00

51 lines
2.2 KiB
C#

using GFramework.Game.Abstractions.Config;
namespace GFramework.Game.Config;
/// <summary>
/// 负责在运行时配置系统内部构造结构化加载异常。
/// 该工厂集中封装诊断字段填充,避免不同失败路径对同一语义产生不一致的消息和字段约定。
/// </summary>
internal static class ConfigLoadExceptionFactory
{
/// <summary>
/// 创建一个包含结构化诊断信息的配置加载异常。
/// </summary>
/// <param name="failureKind">失败类别。</param>
/// <param name="tableName">配置表名称。</param>
/// <param name="message">错误消息。</param>
/// <param name="configDirectoryPath">配置目录绝对路径;不适用时为空。</param>
/// <param name="yamlPath">YAML 文件绝对路径;不适用时为空。</param>
/// <param name="schemaPath">schema 文件绝对路径;不适用时为空。</param>
/// <param name="displayPath">逻辑字段路径;不适用时为空。</param>
/// <param name="referencedTableName">跨表引用目标表名称;不适用时为空。</param>
/// <param name="rawValue">原始值或引用值;不适用时为空。</param>
/// <param name="detail">附加细节;不适用时为空。</param>
/// <param name="innerException">底层异常;不适用时为空。</param>
/// <returns>构造完成的配置加载异常。</returns>
internal static ConfigLoadException Create(
ConfigLoadFailureKind failureKind,
string tableName,
string message,
string? configDirectoryPath = null,
string? yamlPath = null,
string? schemaPath = null,
string? displayPath = null,
string? referencedTableName = null,
string? rawValue = null,
string? detail = null,
Exception? innerException = null)
{
var diagnostic = new ConfigLoadDiagnostic(
failureKind,
tableName,
configDirectoryPath,
yamlPath,
schemaPath,
displayPath,
referencedTableName,
rawValue,
detail);
return new ConfigLoadException(diagnostic, message, innerException);
}
}