.NET 社区工具包 8.2 发布,带来代码修复器、性能改进
.NET Community Toolkit 8.2 版正式发布!新版本包括在运行时和 MVVM Toolkit 源码生成器中的性能改进、新代码修复程序、新的用户请求功能等内容。
.NET 社区工具包是一组适用于所有 .NET 开发人员,且与不绑定 UI 平台的帮助程序和 API。该工具包由 Microsoft 维护和发布,是 .NET 基金会的一部分,它被多个微软内部项目和应用程序使用,例如 Microsoft Store。
.NET 社区工具包的所有库最初都是 Windows 社区工具包的一部分,但随着时间的推移,仅针对 .NET 且不特定于 Windows 的 API 数量不断增加,微软决定将 .NET 相关的内容拆分到一个单独的项目中,以便它们可以独立发展,.NET Community Toolkit 由此诞生。
[RelayCommand]
的自定义属性
新的 8.2.0 版本的 MVVM 工具包在使用 [RelayCommand]
时包括对自定义属性的支持,利用原生的 field:
和 property:
C# 语法来指示自定义属性的目标。这样一来,在使用 [RelayCommand]
生成 MVVM 命令时,可以完全控制所有生成成员的属性。
比如
[RelayCommand] [property: JsonIgnore] private void DoWork() { // Do some work here... }
会生成如下成员,且生成的 DoWorkCommand
属性具有指定的属性
private RelayCommand? _doWorkCommand; [JsonIgnore] public IRelayCommand DoWorkCommand => _doWorkCommand ??= new RelayCommand(DoWork);
新的 [ObservableProperty]
更改 hook
MVVM 中一个相对常见的场景是有一些“选择的项目”可观察属性,例如当前选择的用户,或嵌套的视图模型。当此属性的值发生变化时,还必须对新旧实例进行一些调整。例如,设置一些“selected”属性,或者订阅事件。
以前,在这种情况下使用 [ObservableProperty]
并不理想,因为它没有必要的基础设施,来轻松注入此类逻辑以对设置的旧值和新值执行必要的状态更改。
为了解决这个问题,从 MVVM 工具包的 8.2 版本开始,为所有 [ObservableProperty]
字段生成了两个新的属性更改 hook。示例:
[ObservableProperty] private DocumentViewModel _selectedDocument;
现在将生成如下代码:
public DocumentViewModel SelectedDocument { get => _selectedDocument; set { if (!EqualityComparer<DocumentViewModel>.Default.Equals(_selectedDocument, value)) { DocumentViewModel? oldValue = _selectedDocument; OnNameChanging(value); OnNameChanging(oldValue, value); OnPropertyChanging(); _selectedDocument = value; OnNameChanged(value); OnNameChanged(oldValue, value); OnPropertyChanged(); } } } partial void OnSelectedDocumentChanging(DocumentViewModel value); partial void OnSelectedDocumentChanged(DocumentViewModel value); partial void OnSelectedDocumentChanging(DocumentViewModel? oldValue, DocumentViewModel newValue); partial void OnSelectedDocumentChanged(DocumentViewModel? oldValue, DocumentViewModel newValue);
注意正在生成的两个新的“OnPropertyNameChanging”和“Changed”方法,这两个提供了易于使用的 hook,用于注入在每个属性更改事件上触发的代码,且可以修改正在设置的旧值和新值。
MVVM 工具包代码修复器
之前版本的 MVVM Toolkit 添加了两个新的诊断分析器,它们会在错误访问标有 [ObservableProperty]
的字段,以及在使用声明具有 [ObservableProperty]
和类似属性的类型时产生警告。
在 8.2 版本中,这两个分析器还包括内置的代码修复器。只需将鼠标悬停在 IntelliSense 灯泡上,选择代码修复,该功能会自动应用所有更改,以使代码恢复到正确的状态。支持批量修复:
MVVM 工具包源代码生成器优化
MVVM Toolkit 8.2 还对其源代码生成器进行了一些性能改进。这一次重点是优化增量管道,以最大限度地减少内存使用,并确保不会在并发执行中保持不必要的对象。
以下是一些用于改进这一点的 PR:
- 将剩余的诊断移至分析器 ( #581 ):MVVM 工具包中的另外两个诊断已移至诊断分析器,该分析器可以同时运行并在进程外运行。
- 在分析器中尽早解析符号 ( #587 ):所有必要的分析器符号现在都在初始回调设置期间解析,加快了每个编译实例中的回调执行。
其他改动和改进可在发布公告中查阅。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Quarkus 3.0 Final 发布,基于 Jakarta EE 10
Quarkus 是 Kubernetes 原生的 Java 技术栈,它由同类中最佳的 Java 库和标准精制而成,并针对容器和云部署量身定制。Quarkus 的总体目标是将 Java 带入云原生的应用开发,并使它成为 Serverless、云和 Kubernetes 环境的领先平台。同时统一了响应式和命令式编程模型,开发人员可以选择最适合其用例的模型,并更轻松地将其代码与其它组件集成到响应式系统中,例如带有 Vert.x 和 Kafka 的响应式流、响应式数据库 API 等。 Quarkus 3.0 现已发布,该版本基于 Jakarta EE 10,并包含了一些新功能和增强功能的实现。 新的Dev UI Quarkus 3.0 现在有一个新的 Dev UI,它更具可扩展性和更易于使用,以及新的改进的外观和用户体验。新的 Dev UI 默认可用;但是由于并非所有扩展都已迁移到新的 Dev UI,用户仍然可以在/q/dev-v1访问旧的。官方计划在未来的版本中删除旧的 Dev UI。 Jakarta EE 10 Quarkus 2 基于 Jakarta EE 8。Quarkus 3 基于 ...
- 下一篇
Rufus 4.0 发布,需要 Windows 8 或更高版本
Rufus 是一个可以帮助格式化和创建可引导 USB 闪存盘的工具,它可以快速把 ISO 格式的系统镜像文件快速制作成可引导的 USB 启动安装盘,支持 Windows 或 Linux 启动。4.0 版本更新内容如下: 修复持久分区不适用于 Ubuntu 23.04的问题 在 BIOS 模式下启动时修复 Ubuntu 23.04 超出范围的指针错误 修复启用安全启动时 Ubuntu Studio 的boot freeze 修复检查更新时不正确的架构检测 修复处理 GRUB bootloaders 时 Windows Store 应用程序崩溃的问题 修复枚举包含%符号的进程时 Windows Store 应用程序崩溃的问题 修复使用德语本地化时 Windows Store 应用程序崩溃的问题 注意,由于以下原因,主版本被提升: 新版本的 Rufus 需要 Windows 8 或更高版本 新版本的 Rufus 默认为 64 位可执行文件 旧版本的 Rufus 可能无法正确更新 详情可查看:https://rufus.ie/zh/
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Hadoop3单机部署,实现最简伪集群
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- MySQL8.0.19开启GTID主从同步CentOS8
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- CentOS8编译安装MySQL8.0.19
- Mario游戏-低调大师作品
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- SpringBoot2初体验,简单认识spring boot2并且搭建基础工程
- CentOS7安装Docker,走上虚拟化容器引擎之路