diff --git a/GFramework.Core.Tests/Architectures/ArchitectureServicesTests.cs b/GFramework.Core.Tests/Architectures/ArchitectureServicesTests.cs
index 57dc19a5..52c2ecbd 100644
--- a/GFramework.Core.Tests/Architectures/ArchitectureServicesTests.cs
+++ b/GFramework.Core.Tests/Architectures/ArchitectureServicesTests.cs
@@ -359,6 +359,14 @@ public class TestArchitectureContextV3 : IArchitectureContext
throw new NotImplementedException();
}
+ ///
+ /// 测试桩:异步发送 CQRS 命令并返回响应。
+ ///
+ /// 命令响应类型。
+ /// 要发送的命令。
+ /// 取消令牌。
+ /// 命令响应任务。
+ /// 该测试桩未实现此成员。
public ValueTask SendCommandAsync(
GFramework.Cqrs.Abstractions.Cqrs.Command.ICommand command,
CancellationToken cancellationToken = default)
@@ -366,11 +374,26 @@ public class TestArchitectureContextV3 : IArchitectureContext
throw new NotImplementedException();
}
+ ///
+ /// 测试桩:同步发送 CQRS 命令并返回响应。
+ ///
+ /// 命令响应类型。
+ /// 要发送的命令。
+ /// 命令响应。
+ /// 该测试桩未实现此成员。
public TResponse SendCommand(GFramework.Cqrs.Abstractions.Cqrs.Command.ICommand command)
{
throw new NotImplementedException();
}
+ ///
+ /// 测试桩:异步发送 CQRS 查询并返回结果。
+ ///
+ /// 查询结果类型。
+ /// 要发送的查询。
+ /// 取消令牌。
+ /// 查询结果任务。
+ /// 该测试桩未实现此成员。
public ValueTask SendQueryAsync(
GFramework.Cqrs.Abstractions.Cqrs.Query.IQuery query,
CancellationToken cancellationToken = default)
@@ -378,6 +401,13 @@ public class TestArchitectureContextV3 : IArchitectureContext
throw new NotImplementedException();
}
+ ///
+ /// 测试桩:同步发送 CQRS 查询并返回结果。
+ ///
+ /// 查询结果类型。
+ /// 要发送的查询。
+ /// 查询结果。
+ /// 该测试桩未实现此成员。
public TResponse SendQuery(GFramework.Cqrs.Abstractions.Cqrs.Query.IQuery query)
{
throw new NotImplementedException();
diff --git a/GFramework.Core.Tests/Cqrs/MediatorCompatibilityDeprecationTests.cs b/GFramework.Core.Tests/Cqrs/MediatorCompatibilityDeprecationTests.cs
index 2e3bdbca..b25806f0 100644
--- a/GFramework.Core.Tests/Cqrs/MediatorCompatibilityDeprecationTests.cs
+++ b/GFramework.Core.Tests/Cqrs/MediatorCompatibilityDeprecationTests.cs
@@ -35,16 +35,16 @@ public class MediatorCompatibilityDeprecationTests
{
AssertLegacyType(
typeof(ContextAwareMediatorExtensions),
- "Use GFramework.Core.Cqrs.Extensions.ContextAwareCqrsExtensions instead.");
+ "Use GFramework.Core.Extensions.ContextAwareCqrsExtensions instead.");
AssertLegacyType(
typeof(ContextAwareMediatorCommandExtensions),
- "Use GFramework.Core.Cqrs.Extensions.ContextAwareCqrsCommandExtensions instead.");
+ "Use GFramework.Core.Extensions.ContextAwareCqrsCommandExtensions instead.");
AssertLegacyType(
typeof(ContextAwareMediatorQueryExtensions),
- "Use GFramework.Core.Cqrs.Extensions.ContextAwareCqrsQueryExtensions instead.");
+ "Use GFramework.Core.Extensions.ContextAwareCqrsQueryExtensions instead.");
AssertLegacyType(
typeof(MediatorCoroutineExtensions),
- "Use GFramework.Core.Cqrs.Extensions.CqrsCoroutineExtensions instead.");
+ "Use GFramework.Core.Coroutine.Extensions.CqrsCoroutineExtensions instead.");
}
///
diff --git a/GFramework.Core/Coroutine/Extensions/MediatorCoroutineExtensions.cs b/GFramework.Core/Coroutine/Extensions/MediatorCoroutineExtensions.cs
index 70e3c29f..5086e392 100644
--- a/GFramework.Core/Coroutine/Extensions/MediatorCoroutineExtensions.cs
+++ b/GFramework.Core/Coroutine/Extensions/MediatorCoroutineExtensions.cs
@@ -25,7 +25,7 @@ namespace GFramework.Core.Coroutine.Extensions;
///
[EditorBrowsable(EditorBrowsableState.Never)]
[Obsolete(
- "Use GFramework.Core.Cqrs.Extensions.CqrsCoroutineExtensions instead. This compatibility alias will be removed in a future major version.")]
+ "Use GFramework.Core.Coroutine.Extensions.CqrsCoroutineExtensions instead. This compatibility alias will be removed in a future major version.")]
public static class MediatorCoroutineExtensions
{
///
diff --git a/GFramework.Core/Cqrs/Internal/CqrsDispatcher.cs b/GFramework.Core/Cqrs/Internal/CqrsDispatcher.cs
index 4e2c739d..0cae34c4 100644
--- a/GFramework.Core/Cqrs/Internal/CqrsDispatcher.cs
+++ b/GFramework.Core/Cqrs/Internal/CqrsDispatcher.cs
@@ -17,14 +17,20 @@ internal sealed class CqrsDispatcher(
IIocContainer container,
ILogger logger) : ICqrsRuntime
{
+ // 进程级缓存:按请求/响应类型缓存直接处理器调用委托,避免热路径重复反射。
+ // 线程安全依赖 ConcurrentDictionary;缓存与进程同寿命,默认假设请求类型集合有限且稳定。
private static readonly ConcurrentDictionary<(Type RequestType, Type ResponseType), RequestInvoker>
RequestInvokers = new();
+ // 进程级缓存:缓存带 pipeline 的请求调用委托,减少每次分发时的反射与表达式重建开销。
+ // 若后续引入动态生成请求类型,需要重新评估该缓存的增长边界。
private static readonly ConcurrentDictionary<(Type RequestType, Type ResponseType), RequestPipelineInvoker>
RequestPipelineInvokers = new();
+ // 进程级缓存:缓存通知调用委托,复用并发安全字典以支撑多线程发布路径。
private static readonly ConcurrentDictionary NotificationInvokers = new();
+ // 进程级缓存:缓存流式请求调用委托,避免每次创建流时重复解析反射签名。
private static readonly ConcurrentDictionary<(Type RequestType, Type ResponseType), StreamInvoker> StreamInvokers =
new();
diff --git a/GFramework.Core/Extensions/ContextAwareMediatorCommandExtensions.cs b/GFramework.Core/Extensions/ContextAwareMediatorCommandExtensions.cs
index 41d9df27..4ab0692b 100644
--- a/GFramework.Core/Extensions/ContextAwareMediatorCommandExtensions.cs
+++ b/GFramework.Core/Extensions/ContextAwareMediatorCommandExtensions.cs
@@ -11,7 +11,7 @@ namespace GFramework.Core.Extensions;
///
[EditorBrowsable(EditorBrowsableState.Never)]
[Obsolete(
- "Use GFramework.Core.Cqrs.Extensions.ContextAwareCqrsCommandExtensions instead. This compatibility alias will be removed in a future major version.")]
+ "Use GFramework.Core.Extensions.ContextAwareCqrsCommandExtensions instead. This compatibility alias will be removed in a future major version.")]
public static class ContextAwareMediatorCommandExtensions
{
///
diff --git a/GFramework.Core/Extensions/ContextAwareMediatorExtensions.cs b/GFramework.Core/Extensions/ContextAwareMediatorExtensions.cs
index b4d607bc..f2294930 100644
--- a/GFramework.Core/Extensions/ContextAwareMediatorExtensions.cs
+++ b/GFramework.Core/Extensions/ContextAwareMediatorExtensions.cs
@@ -11,7 +11,7 @@ namespace GFramework.Core.Extensions;
///
[EditorBrowsable(EditorBrowsableState.Never)]
[Obsolete(
- "Use GFramework.Core.Cqrs.Extensions.ContextAwareCqrsExtensions instead. This compatibility alias will be removed in a future major version.")]
+ "Use GFramework.Core.Extensions.ContextAwareCqrsExtensions instead. This compatibility alias will be removed in a future major version.")]
public static class ContextAwareMediatorExtensions
{
///
diff --git a/GFramework.Core/Extensions/ContextAwareMediatorQueryExtensions.cs b/GFramework.Core/Extensions/ContextAwareMediatorQueryExtensions.cs
index 49b57445..61b02cb9 100644
--- a/GFramework.Core/Extensions/ContextAwareMediatorQueryExtensions.cs
+++ b/GFramework.Core/Extensions/ContextAwareMediatorQueryExtensions.cs
@@ -11,7 +11,7 @@ namespace GFramework.Core.Extensions;
///
[EditorBrowsable(EditorBrowsableState.Never)]
[Obsolete(
- "Use GFramework.Core.Cqrs.Extensions.ContextAwareCqrsQueryExtensions instead. This compatibility alias will be removed in a future major version.")]
+ "Use GFramework.Core.Extensions.ContextAwareCqrsQueryExtensions instead. This compatibility alias will be removed in a future major version.")]
public static class ContextAwareMediatorQueryExtensions
{
///
diff --git a/GFramework.Godot.SourceGenerators.Tests/Behavior/AutoSceneGeneratorTests.cs b/GFramework.Godot.SourceGenerators.Tests/Behavior/AutoSceneGeneratorTests.cs
index b50b0d73..2c6dc972 100644
--- a/GFramework.Godot.SourceGenerators.Tests/Behavior/AutoSceneGeneratorTests.cs
+++ b/GFramework.Godot.SourceGenerators.Tests/Behavior/AutoSceneGeneratorTests.cs
@@ -11,10 +11,10 @@ public class AutoSceneGeneratorTests
{
const string source = """
using System;
- using GFramework.Godot.SourceGenerators.Abstractions;
+ using GFramework.Godot.SourceGenerators.Abstractions.UI;
using Godot;
- namespace GFramework.Godot.SourceGenerators.Abstractions
+ namespace GFramework.Godot.SourceGenerators.Abstractions.UI
{
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
public sealed class AutoSceneAttribute : Attribute
@@ -88,10 +88,10 @@ public class AutoSceneGeneratorTests
{
const string source = """
using System;
- using GFramework.Godot.SourceGenerators.Abstractions;
+ using GFramework.Godot.SourceGenerators.Abstractions.UI;
using Godot;
- namespace GFramework.Godot.SourceGenerators.Abstractions
+ namespace GFramework.Godot.SourceGenerators.Abstractions.UI
{
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
public sealed class AutoSceneAttribute : Attribute
@@ -137,10 +137,10 @@ public class AutoSceneGeneratorTests
const string source = """
#nullable enable
using System;
- using GFramework.Godot.SourceGenerators.Abstractions;
+ using GFramework.Godot.SourceGenerators.Abstractions.UI;
using Godot;
- namespace GFramework.Godot.SourceGenerators.Abstractions
+ namespace GFramework.Godot.SourceGenerators.Abstractions.UI
{
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
public sealed class AutoSceneAttribute : Attribute
@@ -225,10 +225,10 @@ public class AutoSceneGeneratorTests
{
const string source = """
using System;
- using GFramework.Godot.SourceGenerators.Abstractions;
+ using GFramework.Godot.SourceGenerators.Abstractions.UI;
using Godot;
- namespace GFramework.Godot.SourceGenerators.Abstractions
+ namespace GFramework.Godot.SourceGenerators.Abstractions.UI
{
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
public sealed class AutoSceneAttribute : Attribute
@@ -279,10 +279,10 @@ public class AutoSceneGeneratorTests
const string source = """
using System;
using GFramework.Game.Abstractions.Scene;
- using GFramework.Godot.SourceGenerators.Abstractions;
+ using GFramework.Godot.SourceGenerators.Abstractions.UI;
using Godot;
- namespace GFramework.Godot.SourceGenerators.Abstractions
+ namespace GFramework.Godot.SourceGenerators.Abstractions.UI
{
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
public sealed class AutoSceneAttribute : Attribute
diff --git a/GFramework.Godot.SourceGenerators.Tests/Behavior/AutoUiPageGeneratorTests.cs b/GFramework.Godot.SourceGenerators.Tests/Behavior/AutoUiPageGeneratorTests.cs
index 8e7d1115..2b8aca67 100644
--- a/GFramework.Godot.SourceGenerators.Tests/Behavior/AutoUiPageGeneratorTests.cs
+++ b/GFramework.Godot.SourceGenerators.Tests/Behavior/AutoUiPageGeneratorTests.cs
@@ -11,10 +11,10 @@ public class AutoUiPageGeneratorTests
{
const string source = """
using System;
- using GFramework.Godot.SourceGenerators.Abstractions;
+ using GFramework.Godot.SourceGenerators.Abstractions.UI;
using Godot;
- namespace GFramework.Godot.SourceGenerators.Abstractions
+ namespace GFramework.Godot.SourceGenerators.Abstractions.UI
{
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
public sealed class AutoUiPageAttribute : Attribute
@@ -100,10 +100,10 @@ public class AutoUiPageGeneratorTests
{
const string source = """
using System;
- using GFramework.Godot.SourceGenerators.Abstractions;
+ using GFramework.Godot.SourceGenerators.Abstractions.UI;
using Godot;
- namespace GFramework.Godot.SourceGenerators.Abstractions
+ namespace GFramework.Godot.SourceGenerators.Abstractions.UI
{
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
public sealed class AutoUiPageAttribute : Attribute
@@ -183,10 +183,10 @@ public class AutoUiPageGeneratorTests
const string source = """
#nullable enable
using System;
- using GFramework.Godot.SourceGenerators.Abstractions;
+ using GFramework.Godot.SourceGenerators.Abstractions.UI;
using Godot;
- namespace GFramework.Godot.SourceGenerators.Abstractions
+ namespace GFramework.Godot.SourceGenerators.Abstractions.UI
{
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
public sealed class AutoUiPageAttribute : Attribute
diff --git a/GFramework.Godot.SourceGenerators.Tests/Registration/AutoRegisterExportedCollectionsGeneratorTests.cs b/GFramework.Godot.SourceGenerators.Tests/Registration/AutoRegisterExportedCollectionsGeneratorTests.cs
index 3a67d3c5..befdcf59 100644
--- a/GFramework.Godot.SourceGenerators.Tests/Registration/AutoRegisterExportedCollectionsGeneratorTests.cs
+++ b/GFramework.Godot.SourceGenerators.Tests/Registration/AutoRegisterExportedCollectionsGeneratorTests.cs
@@ -13,9 +13,9 @@ public class AutoRegisterExportedCollectionsGeneratorTests
#nullable enable
using System;
using System.Collections.Generic;
- using GFramework.Godot.SourceGenerators.Abstractions;
+ using GFramework.Godot.SourceGenerators.Abstractions.UI;
- namespace GFramework.Godot.SourceGenerators.Abstractions
+ namespace GFramework.Godot.SourceGenerators.Abstractions.UI
{
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
public sealed class AutoRegisterExportedCollectionsAttribute : Attribute { }
@@ -86,9 +86,9 @@ public class AutoRegisterExportedCollectionsGeneratorTests
const string source = """
using System;
using System.Collections;
- using GFramework.Godot.SourceGenerators.Abstractions;
+ using GFramework.Godot.SourceGenerators.Abstractions.UI;
- namespace GFramework.Godot.SourceGenerators.Abstractions
+ namespace GFramework.Godot.SourceGenerators.Abstractions.UI
{
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
public sealed class AutoRegisterExportedCollectionsAttribute : Attribute { }
@@ -141,9 +141,9 @@ public class AutoRegisterExportedCollectionsGeneratorTests
#nullable enable
using System;
using System.Collections.Generic;
- using GFramework.Godot.SourceGenerators.Abstractions;
+ using GFramework.Godot.SourceGenerators.Abstractions.UI;
- namespace GFramework.Godot.SourceGenerators.Abstractions
+ namespace GFramework.Godot.SourceGenerators.Abstractions.UI
{
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
public sealed class AutoRegisterExportedCollectionsAttribute : Attribute { }
@@ -207,9 +207,9 @@ public class AutoRegisterExportedCollectionsGeneratorTests
#nullable enable
using System;
using System.Collections.Generic;
- using GFramework.Godot.SourceGenerators.Abstractions;
+ using GFramework.Godot.SourceGenerators.Abstractions.UI;
- namespace GFramework.Godot.SourceGenerators.Abstractions
+ namespace GFramework.Godot.SourceGenerators.Abstractions.UI
{
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
public sealed class AutoRegisterExportedCollectionsAttribute : Attribute { }
@@ -284,9 +284,9 @@ public class AutoRegisterExportedCollectionsGeneratorTests
const string source = """
using System;
using System.Collections.Generic;
- using GFramework.Godot.SourceGenerators.Abstractions;
+ using GFramework.Godot.SourceGenerators.Abstractions.UI;
- namespace GFramework.Godot.SourceGenerators.Abstractions
+ namespace GFramework.Godot.SourceGenerators.Abstractions.UI
{
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
public sealed class AutoRegisterExportedCollectionsAttribute : Attribute { }
@@ -344,9 +344,9 @@ public class AutoRegisterExportedCollectionsGeneratorTests
#nullable enable
using System;
using System.Collections.Generic;
- using GFramework.Godot.SourceGenerators.Abstractions;
+ using GFramework.Godot.SourceGenerators.Abstractions.UI;
- namespace GFramework.Godot.SourceGenerators.Abstractions
+ namespace GFramework.Godot.SourceGenerators.Abstractions.UI
{
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
public sealed class AutoRegisterExportedCollectionsAttribute : Attribute { }
@@ -414,9 +414,9 @@ public class AutoRegisterExportedCollectionsGeneratorTests
#nullable enable
using System;
using System.Collections.Generic;
- using GFramework.Godot.SourceGenerators.Abstractions;
+ using GFramework.Godot.SourceGenerators.Abstractions.UI;
- namespace GFramework.Godot.SourceGenerators.Abstractions
+ namespace GFramework.Godot.SourceGenerators.Abstractions.UI
{
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
public sealed class AutoRegisterExportedCollectionsAttribute : Attribute { }
@@ -482,9 +482,9 @@ public class AutoRegisterExportedCollectionsGeneratorTests
const string source = """
using System;
using System.Collections.Generic;
- using GFramework.Godot.SourceGenerators.Abstractions;
+ using GFramework.Godot.SourceGenerators.Abstractions.UI;
- namespace GFramework.Godot.SourceGenerators.Abstractions
+ namespace GFramework.Godot.SourceGenerators.Abstractions.UI
{
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
public sealed class AutoRegisterExportedCollectionsAttribute : Attribute { }
@@ -549,9 +549,9 @@ public class AutoRegisterExportedCollectionsGeneratorTests
const string source = """
using System;
using System.Collections.Generic;
- using GFramework.Godot.SourceGenerators.Abstractions;
+ using GFramework.Godot.SourceGenerators.Abstractions.UI;
- namespace GFramework.Godot.SourceGenerators.Abstractions
+ namespace GFramework.Godot.SourceGenerators.Abstractions.UI
{
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
public sealed class AutoRegisterExportedCollectionsAttribute : Attribute { }
@@ -604,9 +604,9 @@ public class AutoRegisterExportedCollectionsGeneratorTests
const string source = """
using System;
using System.Collections.Generic;
- using GFramework.Godot.SourceGenerators.Abstractions;
+ using GFramework.Godot.SourceGenerators.Abstractions.UI;
- namespace GFramework.Godot.SourceGenerators.Abstractions
+ namespace GFramework.Godot.SourceGenerators.Abstractions.UI
{
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
public sealed class AutoRegisterExportedCollectionsAttribute : Attribute { }
@@ -659,9 +659,9 @@ public class AutoRegisterExportedCollectionsGeneratorTests
const string source = """
using System;
using System.Collections.Generic;
- using GFramework.Godot.SourceGenerators.Abstractions;
+ using GFramework.Godot.SourceGenerators.Abstractions.UI;
- namespace GFramework.Godot.SourceGenerators.Abstractions
+ namespace GFramework.Godot.SourceGenerators.Abstractions.UI
{
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = false)]
public sealed class AutoRegisterExportedCollectionsAttribute : Attribute { }
@@ -715,9 +715,9 @@ public class AutoRegisterExportedCollectionsGeneratorTests
#nullable enable
using System;
using System.Collections.Generic;
- using GFramework.Godot.SourceGenerators.Abstractions;
+ using GFramework.Godot.SourceGenerators.Abstractions.UI;
- namespace GFramework.Godot.SourceGenerators.Abstractions
+ namespace GFramework.Godot.SourceGenerators.Abstractions.UI
{
[AttributeUsage(AttributeTargets.Class, Inherited = false, AllowMultiple = true)]
public sealed class AutoRegisterExportedCollectionsAttribute : Attribute { }
diff --git a/GFramework.Godot.SourceGenerators/Behavior/AutoSceneGenerator.cs b/GFramework.Godot.SourceGenerators/Behavior/AutoSceneGenerator.cs
index f2920be4..ee389f0e 100644
--- a/GFramework.Godot.SourceGenerators/Behavior/AutoSceneGenerator.cs
+++ b/GFramework.Godot.SourceGenerators/Behavior/AutoSceneGenerator.cs
@@ -18,7 +18,8 @@ namespace GFramework.Godot.SourceGenerators.Behavior;
public sealed class AutoSceneGenerator : IIncrementalGenerator
{
private const string AutoSceneAttributeMetadataName =
- $"{PathContests.GodotSourceGeneratorsAbstractionsPath}.AutoSceneAttribute";
+ $"{PathContests.GodotSourceGeneratorsAbstractionsPath}.UI.AutoSceneAttribute";
+
private static readonly string[] GeneratedMemberNames =
[
"SceneKeyStr",
diff --git a/GFramework.Godot.SourceGenerators/Behavior/AutoUiPageGenerator.cs b/GFramework.Godot.SourceGenerators/Behavior/AutoUiPageGenerator.cs
index 1e0fe7f6..ca193956 100644
--- a/GFramework.Godot.SourceGenerators/Behavior/AutoUiPageGenerator.cs
+++ b/GFramework.Godot.SourceGenerators/Behavior/AutoUiPageGenerator.cs
@@ -12,7 +12,7 @@ namespace GFramework.Godot.SourceGenerators.Behavior;
public sealed class AutoUiPageGenerator : IIncrementalGenerator
{
private const string AutoUiPageAttributeMetadataName =
- $"{PathContests.GodotSourceGeneratorsAbstractionsPath}.AutoUiPageAttribute";
+ $"{PathContests.GodotSourceGeneratorsAbstractionsPath}.UI.AutoUiPageAttribute";
public void Initialize(IncrementalGeneratorInitializationContext context)
{
diff --git a/GFramework.Godot.SourceGenerators/Registration/AutoRegisterExportedCollectionsGenerator.cs b/GFramework.Godot.SourceGenerators/Registration/AutoRegisterExportedCollectionsGenerator.cs
index 12589767..93219dcb 100644
--- a/GFramework.Godot.SourceGenerators/Registration/AutoRegisterExportedCollectionsGenerator.cs
+++ b/GFramework.Godot.SourceGenerators/Registration/AutoRegisterExportedCollectionsGenerator.cs
@@ -18,10 +18,10 @@ namespace GFramework.Godot.SourceGenerators.Registration;
public sealed class AutoRegisterExportedCollectionsGenerator : IIncrementalGenerator
{
private const string AutoRegisterExportedCollectionsAttributeMetadataName =
- $"{PathContests.GodotSourceGeneratorsAbstractionsPath}.AutoRegisterExportedCollectionsAttribute";
+ $"{PathContests.GodotSourceGeneratorsAbstractionsPath}.UI.AutoRegisterExportedCollectionsAttribute";
private const string RegisterExportedCollectionAttributeMetadataName =
- $"{PathContests.GodotSourceGeneratorsAbstractionsPath}.RegisterExportedCollectionAttribute";
+ $"{PathContests.GodotSourceGeneratorsAbstractionsPath}.UI.RegisterExportedCollectionAttribute";
private const string GeneratedMethodName = "__RegisterExportedCollections_Generated";
diff --git a/docs/zh-CN/source-generators/auto-register-exported-collections-generator.md b/docs/zh-CN/source-generators/auto-register-exported-collections-generator.md
index 2d73f531..8d1ca366 100644
--- a/docs/zh-CN/source-generators/auto-register-exported-collections-generator.md
+++ b/docs/zh-CN/source-generators/auto-register-exported-collections-generator.md
@@ -13,12 +13,13 @@
`AutoRegisterExportedCollections` 会把这类样板收敛成声明式配置。
它特别适合 `GameEntryPoint`、资源根节点、配置引导节点这类“导出即注册”的场景。
+相关特性当前位于 `GFramework.Godot.SourceGenerators.Abstractions.UI` 命名空间。
## 基础使用
```csharp
using System.Collections.Generic;
-using GFramework.Godot.SourceGenerators.Abstractions;
+using GFramework.Godot.SourceGenerators.Abstractions.UI;
using Godot;
public interface IKeyValue
diff --git a/docs/zh-CN/source-generators/auto-scene-generator.md b/docs/zh-CN/source-generators/auto-scene-generator.md
index 1a2ff881..92927daa 100644
--- a/docs/zh-CN/source-generators/auto-scene-generator.md
+++ b/docs/zh-CN/source-generators/auto-scene-generator.md
@@ -12,11 +12,12 @@
- `GetScene()` 包装方法
`AutoScene` 会在编译期生成这些固定样板。
+该特性当前位于 `GFramework.Godot.SourceGenerators.Abstractions.UI` 命名空间。
## 基础使用
```csharp
-using GFramework.Godot.SourceGenerators.Abstractions;
+using GFramework.Godot.SourceGenerators.Abstractions.UI;
using GFramework.Game.Abstractions.Enums;
using Godot;
diff --git a/docs/zh-CN/source-generators/auto-ui-page-generator.md b/docs/zh-CN/source-generators/auto-ui-page-generator.md
index b455eab8..1c1ecd48 100644
--- a/docs/zh-CN/source-generators/auto-ui-page-generator.md
+++ b/docs/zh-CN/source-generators/auto-ui-page-generator.md
@@ -13,11 +13,12 @@
- `GetPage()` 工厂包装
`AutoUiPage` 会把这部分样板迁移到编译期生成。
+该特性当前位于 `GFramework.Godot.SourceGenerators.Abstractions.UI` 命名空间。
## 基础使用
```csharp
-using GFramework.Godot.SourceGenerators.Abstractions;
+using GFramework.Godot.SourceGenerators.Abstractions.UI;
using GFramework.Game.Abstractions.Enums;
using Godot;
@@ -123,7 +124,7 @@ partial class MainMenu
## 组合示例
```csharp
-using GFramework.Godot.SourceGenerators.Abstractions;
+using GFramework.Godot.SourceGenerators.Abstractions.UI;
using GFramework.Game.Abstractions.Enums;
using GFramework.SourceGenerators.Abstractions.Rule;
using Godot;
diff --git a/docs/zh-CN/source-generators/index.md b/docs/zh-CN/source-generators/index.md
index 8fd91e66..ea62aad0 100644
--- a/docs/zh-CN/source-generators/index.md
+++ b/docs/zh-CN/source-generators/index.md
@@ -610,7 +610,7 @@ AutoUiPage 生成器为 Godot 页面节点自动生成 `UiKeyStr`、缓存的 `I
### 基础示例
```csharp
-using GFramework.Godot.SourceGenerators.Abstractions;
+using GFramework.Godot.SourceGenerators.Abstractions.UI;
using GFramework.Game.Abstractions.Enums;
using Godot;
@@ -635,7 +635,7 @@ AutoScene 生成器为场景根节点自动生成 `SceneKeyStr`、缓存的 `ISc
### 基础示例
```csharp
-using GFramework.Godot.SourceGenerators.Abstractions;
+using GFramework.Godot.SourceGenerators.Abstractions.UI;
using GFramework.Game.Abstractions.Enums;
using Godot;
@@ -660,7 +660,7 @@ AutoRegisterExportedCollections 生成器为 Godot 导出集合自动生成批
### 基础示例
```csharp
-using GFramework.Godot.SourceGenerators.Abstractions;
+using GFramework.Godot.SourceGenerators.Abstractions.UI;
using Godot;
[AutoRegisterExportedCollections]