您现在的位置是:首页 > 文章详情

.NET 社区工具包 8.2 发布,带来代码修复器、性能改进

日期:2023-04-27点击:207

.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 ):所有必要的分析器符号现在都在初始回调设置期间解析,加快了每个编译实例中的回调执行。

 

其他改动和改进可在发布公告中查阅。

原文链接:https://www.oschina.net/news/238883/dotnet-community-toolkit-8-2-0-released
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章