From 81897ce2aca83b5ed2b6684283118bc589415911 Mon Sep 17 00:00:00 2001
From: GeWuYou <95328647+GeWuYou@users.noreply.github.com>
Date: Wed, 15 Apr 2026 17:00:49 +0800
Subject: [PATCH] =?UTF-8?q?docs(source-generators):=20=E6=B7=BB=E5=8A=A0?=
=?UTF-8?q?=E6=BA=90=E7=A0=81=E7=94=9F=E6=88=90=E5=99=A8=E6=96=87=E6=A1=A3?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
- 新增 AutoRegisterExportedCollections 生成器文档
- 新增 AutoScene 生成器文档
- 新增 AutoUiPage 生成器文档
- 新增完整的源码生成器索引文档
- 详细介绍各生成器的使用方法和参数说明
- 提供生成代码示例和诊断信息说明
- 包含性能优势和使用示例章节
---
.../ArchitectureServicesTests.cs | 30 ++++++++++++
.../MediatorCompatibilityDeprecationTests.cs | 8 ++--
.../Extensions/MediatorCoroutineExtensions.cs | 2 +-
.../Cqrs/Internal/CqrsDispatcher.cs | 6 +++
.../ContextAwareMediatorCommandExtensions.cs | 2 +-
.../ContextAwareMediatorExtensions.cs | 2 +-
.../ContextAwareMediatorQueryExtensions.cs | 2 +-
.../Behavior/AutoSceneGeneratorTests.cs | 20 ++++----
.../Behavior/AutoUiPageGeneratorTests.cs | 12 ++---
...gisterExportedCollectionsGeneratorTests.cs | 48 +++++++++----------
.../Behavior/AutoSceneGenerator.cs | 3 +-
.../Behavior/AutoUiPageGenerator.cs | 2 +-
...utoRegisterExportedCollectionsGenerator.cs | 4 +-
...register-exported-collections-generator.md | 3 +-
.../source-generators/auto-scene-generator.md | 3 +-
.../auto-ui-page-generator.md | 5 +-
docs/zh-CN/source-generators/index.md | 6 +--
17 files changed, 99 insertions(+), 59 deletions(-)
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]