Skip to content

ObservableEventsGenerator(贡献者)

语言

English

本文说明 ObservableEventsGenerator 在生成器仓库中的源码布局,不改变 Observable 事件 中的使用者 API。

对使用者无影响

生成器已拆分为 partial 文件,并移除了 0.6.0 接口化之前遗留的扁平 wrapper 发码路径。生成物与公开扩展方法与 0.6.1 一致

代码位置

共享源码目录:MvvmAIO.R3.SourceGenerators/MvvmAIO.R3.SourceGenerators/(由 MvvmAIO.R3.SourceGenerators.projitems 列出;各 Roslyn* 项目引用)。

ObservableEventsGeneratorpublic sealed partial class,仅根文件带 [Generator]

文件一览

文件职责
ObservableEventsGenerator.csInitialize、post-init、RegisterSourceOutput 编排
ObservableEvents/ObservableEventsConstants.cs入口方法名、GeneratedNamespaceQualifiedType()
ObservableEvents/ObservableEventsEntryKind.csFromEvents、路由、附加路由等种类
ObservableEvents/ObservableEventsModels.csObservableEventTargetSetsEventInterfaceDescriptor、约束目标
ObservableEventsGenerator.Discovery.cs语法过滤、CollectObservableEventTargets
ObservableEventsGenerator.InterfacePipeline.csEmitInterfaceBasedSources、层次与命名冲突
ObservableEventsGenerator.InterfaceEmission.cs接口 / *Impl / 扩展方法发射
ObservableEventsGenerator.GenericConstraints.cswhere T : A, B 组合接口
ObservableEventsGenerator.RoutedDetection.csWPF / Avalonia 路由 CLR 判定
ObservableEventsGenerator.AttachedRouted.csAvalonia 附加路由扩展
ObservableEventsGenerator.EventProperties.cs事件 Observable 属性、委托检查
ObservableEventsGenerator.Helpers.cs标识符、约束子句、诊断辅助
ObservableEventsSyntaxFactory.cs纯 SyntaxFactory(无编排)

新增 .cs 时须在 MvvmAIO.R3.SourceGenerators.projitems 中按字母序添加 Compile Include

运行时管线

mermaid
flowchart TD
  init[Initialize]
  discover[Discovery: CollectObservableEventTargets]
  iface[InterfacePipeline: EmitInterfaceBasedSources]
  emit[InterfaceEmission + GenericConstraints]
  attached[AttachedRouted per target]
  init --> discover
  discover --> iface
  iface --> emit
  discover --> attached
  1. Post-init — 引导扩展与 NullEventsGeneratorBootstrapSyntaxFactory)。
  2. Discovery — 从 FromEvents()、路由入口、泛型约束、附加路由等收集目标类型。
  3. 接口管线 — 构建 EventInterfaceDescriptorEventInterfaces.{kind}.g.cs + {Type}.{kind}.g.cs
  4. 附加路由 — 独立路径,返回 Observable<T>(非接口属性模型)。

静态 ObservableEventsStatics / OBS_* 的发现逻辑保留,但生成开关为 false

已移除的内部路径

未经设计讨论请勿恢复:

  • v0.4.x 扁平 wrapperGenerateObservableSourceForTypeCreateWrapperClass、旧 CreateExtensionsClass 链等)。

实例事件与路由事件仅走上述接口管线

延伸阅读(生成器仓库)

文档内容
AGENTS.md规范、CI、诊断、完整索引
docs/README.md仓库内开发文档索引
design-interface-based-event-generation.md接口层次算法与 §11 源码结构(中文)

相关页面

基于 MIT 许可证发布。

基于 MIT 许可证发布。