SuperAPI AI 工具集

reactor-wrapping

前端与建站

查看项目

更新于 10-16 00:31

技能介绍

用途:当应用需要 Reactor 没有内置工厂的控件时(Windows Community Toolkit 控件、第三方厂商控件或自定义 Control 子类),用 Reactor.Wrappers.Generator 源生成器把控件变成一等声明式元素,无需手写包装器、处理器或注册代码。

主要能力:从一个带注解的 partial record 生成 init-props、ControlDescriptor、Pattern-A 注册以及以控件命名的参数化工厂。自动推断可设置值属性、{P}Changed 双向配对、[ContentProperty] 内容槽、Children/Items 集合槽、RoutedEventHandler 等事件回调。提供 [GenerateReactorWrapper]、[WrapControlled]、[WrapOneWay]、[WrapAlias]、[WrapContent]、[WrapConvert]、[WrapEvent]、[WrapLifecycle]、[WrapPanelChildren]、[WrapManual]、[WrapElementSlot]、[WrapPolymorphic]、[WrapDecorator] 等注解做精细控制。生成器会在元素静态构造函数中发出 ReactorApp.RegisterControlAssembly,避免 0xC000027B 崩溃。

使用方式:引用 Microsoft.UI.Reactor 与目标控件包;目标须为非静态 FrameworkElement 且有公共无参构造函数;保持 record 为 partial。声明示例: [GenerateReactorWrapper(typeof(CommunityToolkit.WinUI.Controls.SettingsCard))] public partial record SettingsCardElement; 再用 using static 调用生成的工厂。

适用场景:包装 WCT、第三方或自有控件;需要声明式子元素嵌入、双向绑定、生命周期钩子或面板附加属性时。

限制:不符合约定的双向事件需 [WrapControlled];一个控件只能有一个受控槽(否则 REACTORGEN012);生成器无法表达时需回退到手写 ControlDescriptor / IElementHandler 路径。诊断码 REACTORGEN001–015,可用 mur check <path> 查看。规范示例见 samples/apps/wct-controls/,设计规范见 docs/specs/058-control-wrapper-generator.md。