GFramework/GFramework.Game/Config/ConfigLoadExceptionFactory.cs
gewuyou ff553977e3 chore(license): 补齐 Apache-2.0 文件头治理
- 新增许可证文件头检查与修复脚本

- 补充维护者手动修复 PR 工作流和 CI 校验

- 更新贡献指南中的文件头说明

- 补齐仓库维护源码和配置文件的许可证声明
2026-05-03 19:39:49 +08:00

54 lines
2.2 KiB
C#

// Copyright (c) 2025-2026 GeWuYou
// SPDX-License-Identifier: Apache-2.0
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);
}
}