Zafiro Avalonia 开发
将以下提示词粘贴到你的 AI 对话框中:
请根据 https://skillhub.cn/install/skillhub.md,安装 @org-02qudk26/avalonia-zafiro-development。
技能介绍
要解决什么问题
用 Avalonia UI 搭配 Zafiro 做跨平台桌面应用时,团队容易在 MVVM 边界、错误处理和响应式数据流上各写一套:有的把 UI 框架细节渗进 ViewModel,有的用异常兜业务失败,还有的混用原生 Rx 与 DynamicData,后期改一处牵一片。
本技能把「可维护、可预测、函数式响应式」写成必须遵守的约定,而不是可选风格指南。
技能如何约束开发
核心支柱可以概括为四条:
- 函数式响应式 MVVM:业务逻辑走 ReactiveUI 与 DynamicData 的纯 MVVM,避免在 View 里堆状态。
- 显式错误处理:用
Result类型表达失败路径,不把异常当控制流。 - 跨平台 ViewModel:ViewModel 不依赖 Avalonia 类型,结构上用组合优于继承。
- Zafiro 优先:先搜代码库里已有的 Zafiro 抽象与辅助方法,缺能力时提可复用扩展,而不是内联一大段管道逻辑。
技能正文还覆盖命名与编码规范、Avalonia/Zafiro 集成与 DynamicData 管道写法、常见 Rx/Zafiro 速查,以及 RefreshableCollection、校验等模式。写代码前的固定步骤是:先搜索 → 评估是否应新增扩展 → 在适用处优先 DynamicData 操作符而非裸 Rx。
适用边界
这是 Zafiro + Avalonia 栈上的工程约定,不替代官方文档,也不保证覆盖你 fork 的私有 Zafiro 版本差异。若项目未采用 ReactiveUI/DynamicData/Result 这一套,需要自行判断哪些条目不适用,而不是机械套用。
使用场景
- 在 Avalonia 新功能里用 DynamicData 管道绑定列表,避免手写 Subscribe 泄漏与重复刷新逻辑
- 把业务失败从 try/catch 迁到 Result,让 ViewModel 在 Zafiro 约定下可测、可组合
- 加列表页前先搜仓库里的 Zafiro 辅助方法与 RefreshableCollection 模式,再决定是否写扩展
- 评审 PR 时对照命名、ViewModel 与 Avalonia 解耦及「组合优于继承」是否达标
适合人员
- 维护公司 Avalonia+Zafiro 桌面客户端、需要统一 ReactiveUI/DynamicData 写法的 C# 工程师
- 负责新模块架构评审、要把 Result 与纯 MVVM 边界写进团队规范的技术负责人
- 从 WPF/MAUI 转入 Avalonia 栈、需要按 Zafiro 优先复用而非堆内联 Rx 的开发者
- 在跨平台桌面项目里实现校验、可刷新集合等模式并要对齐技能速查表的贡献者