Compare commits

...

2 Commits

Author SHA1 Message Date
GeWuYou
34a333a0c1 fix(generator): 解决重复引用路径生成成员名称不稳定问题
- 使用 TryGetValue 方法替代 ContainsKey 检查避免多次访问字典
- 重用跟踪的重复计数确保重复引用路径保持生成的成员名称稳定
- 修复重复计数递增逻辑确保正确的序号生成
- 简化重复计数器的使用方式提高代码可读性
- 移除文件末尾多余空行保持代码整洁
2026-04-05 13:44:31 +08:00
GeWuYou
8c9fbb39b2 feat(config): 添加YAML配置加载器依赖注入支持
- 引入GFramework.Core.Abstractions.Events命名空间
- 添加YamlDotNet反序列化库相关引用
- 注册配置抽象层依赖到YAML配置加载器
- 更新测试文件中的命名空间引用以匹配新架构
2026-04-05 13:34:50 +08:00
3 changed files with 11 additions and 5 deletions

View File

@ -1,4 +1,5 @@
using System.IO;
using GFramework.Game.Abstractions.Config;
using GFramework.Game.Config;
namespace GFramework.Game.Tests.Config;
@ -9,8 +10,6 @@ namespace GFramework.Game.Tests.Config;
[TestFixture]
public class YamlConfigLoaderTests
{
private string _rootPath = null!;
/// <summary>
/// 为每个测试创建独立临时目录,避免文件系统状态互相污染。
/// </summary>
@ -33,6 +32,8 @@ public class YamlConfigLoaderTests
}
}
private string _rootPath = null!;
/// <summary>
/// 验证加载器能够扫描 YAML 文件并将结果写入注册表。
/// </summary>

View File

@ -1,5 +1,8 @@
using System.Diagnostics;
using GFramework.Core.Abstractions.Events;
using GFramework.Game.Abstractions.Config;
using YamlDotNet.Serialization;
using YamlDotNet.Serialization.NamingConventions;
namespace GFramework.Game.Config;

View File

@ -939,11 +939,13 @@ public sealed class SchemaConfigGenerator : IIncrementalGenerator
foreach (var referenceSeed in EnumerateReferenceSeeds(rootObject.Properties))
{
var baseMemberName = BuildReferenceMemberName(referenceSeed.DisplayPath);
if (memberNameCounts.ContainsKey(baseMemberName))
if (memberNameCounts.TryGetValue(baseMemberName, out var duplicateCount))
{
memberNameCounts[baseMemberName]++;
// Reuse the tracked duplicate count so repeated reference paths keep their generated member names stable.
duplicateCount++;
memberNameCounts[baseMemberName] = duplicateCount;
baseMemberName =
$"{baseMemberName}{memberNameCounts[baseMemberName].ToString(CultureInfo.InvariantCulture)}";
$"{baseMemberName}{duplicateCount.ToString(CultureInfo.InvariantCulture)}";
}
else
{