LayerBase.Generator
1.3.2
See the version list below for details.
dotnet add package LayerBase.Generator --version 1.3.2
NuGet\Install-Package LayerBase.Generator -Version 1.3.2
<PackageReference Include="LayerBase.Generator" Version="1.3.2" />
<PackageVersion Include="LayerBase.Generator" Version="1.3.2" />
<PackageReference Include="LayerBase.Generator" />
paket add LayerBase.Generator --version 1.3.2
#r "nuget: LayerBase.Generator, 1.3.2"
#:package LayerBase.Generator@1.3.2
#addin nuget:?package=LayerBase.Generator&version=1.3.2
#tool nuget:?package=LayerBase.Generator&version=1.3.2
🚀 LayerBase.Generator: 工业级架构源生成器
LayerBase.Generator 是 LayerBase 高性能架构总线的专属 C# 源生成器(Source Generator) 插件。
它负责将高层抽象的依赖注入(DI)和事件订阅特性,在编译期转化为直接且连续的底层委托(SOA 数组布局),从而帮助 LayerBase 实现了零运行期反射开销和高达 1.5 亿次/秒的极限吞吐量。
🎯 核心功能与特性
通过挂载简单的特性,LayerBase.Generator 将在后台静默生成所有的样板代码:
- 自动依赖注入与层级挂载 (
[OwnerLayer])- 只需给您的
Service或切片式的EventHandler打上[OwnerLayer(typeof(YourLayer))]特性,生成器便会生成自动注册逻辑。 LayerHub.CreateLayers().Build()能够全自动扫描并在后台完成服务依赖、实例创建与层级挂载。
- 只需给您的
- 事件总线零反射绑定 (
[Subscribe],[SubscribeAsync])- 不再需要手动维护繁琐的
EventBus.Subscribe<T>(Method)。 - 只需在您的
Manager(继承ILayerContext) 的事件处理方法上挂载[Subscribe]或[SubscribeAsync]。 - 源生成器会直接提取函数的底层委托,生成高密度的包装类并注入全局总线,彻底消除运行时反射查找。
- 不再需要手动维护繁琐的
- 全局异常与元数据观察 (
EventMetaData<T>)- 对于网络同步包或核心状态事件,只需定义一个继承自
EventMetaData<T>的类。 - 生成器会自动将它与
partial struct事件绑定,建立一个全局级别的、零侵入的异常拦截点,任何对该事件处理所产生的未捕获异常都会流向这里进行统一监控。
- 对于网络同步包或核心状态事件,只需定义一个继承自
📦 如何安装与配置
由于本包属于编译期分析器(Analyzer),在引入它时请务必配置引用类型,以防将其作为运行库打包进项目中。
- NuGet 快速安装:
dotnet add package LayerBase.Generator --version 1.3.2 - 正确配置 .csproj 引用:
当您在项目中使用该生成器时,确保它的
OutputItemType设置为Analyzer,且不输出运行时程序集:
(如果您使用的是本地源码依赖,配置方法类似):<ItemGroup> <PackageReference Include="LayerBase.Generator" Version="1.3.2" OutputItemType="Analyzer" ReferenceOutputAssembly="false" /> </ItemGroup><ItemGroup> <ProjectReference Include="LayerBase.Generator\LayerBase.Generator.csproj" OutputItemType="Analyzer" ReferenceOutputAssembly="false" /> </ItemGroup>
⚙️ 常见问题 (FAQ)
为什么提示“事件类型必须是 partial 的”?
当您使用 EventMetaData<T> 为事件绑定全局异常观察者时,生成器需要向该结构体中注入静态代码,以完成无反射的底层注册。因此,您的事件必须像这样声明:
public partial struct PlayerDeadEvent { ... }
为什么我的 [Subscribe] 报错或没有生效?
- 请确保您的类继承了
ILayerContext接口(通常是各种Manager)。 - 请确保您的类被标记为
partial,因为生成器需要在该类的同名分部中写入Initialize接口的实现逻辑。 - 请确保您的处理方法的参数前面使用了
in修饰符(如in DamageEvent e),以享受结构体的零分配传递。
🔗 关于 LayerBase
LayerBase.Generator 是 LayerBase 极限性能生态的最后一块拼图。结合 LBTask 的零分配异步和底层的 SOA 零分支引擎,构建您的工业级架构。
项目主页:LayerBase GitHub 仓库
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- Microsoft.CodeAnalysis.CSharp (>= 4.3.0)
- Microsoft.CodeAnalysis.CSharp.Workspaces (>= 4.3.0)
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.
| Version | Downloads | Last Updated |
|---|---|---|
| 1.5.1 | 90 | 5/16/2026 |
| 1.5.0 | 91 | 5/14/2026 |
| 1.4.9 | 104 | 5/12/2026 |
| 1.4.8.2 | 99 | 5/11/2026 |
| 1.4.7.5 | 87 | 5/5/2026 |
| 1.4.7.4 | 80 | 5/5/2026 |
| 1.4.7.3 | 85 | 5/4/2026 |
| 1.4.7.1 | 91 | 5/3/2026 |
| 1.4.5 | 90 | 5/2/2026 |
| 1.4.3 | 95 | 4/30/2026 |
| 1.4.2 | 93 | 4/28/2026 |
| 1.4.1 | 98 | 4/25/2026 |
| 1.4.0 | 89 | 4/24/2026 |
| 1.3.6 | 88 | 4/21/2026 |
| 1.3.4 | 91 | 4/20/2026 |
| 1.3.3 | 92 | 4/19/2026 |
| 1.3.2 | 88 | 4/19/2026 |
| 1.3.1 | 90 | 4/19/2026 |
| 1.3.0 | 88 | 4/19/2026 |
| 1.2.0 | 99 | 4/18/2026 |