MVVM 源生成器
从版本 8.0 开始,MVVM 工具包包含全新的 Roslyn 源生成器,有助于在使用 MVVM 体系结构编写代码时大幅减少样本。 它们可以简化需要设置可观察属性、命令等的方案。 如果你不熟悉源生成器,可以在此处详细了解。 以下是工作原理的简化图:
这意味着当你编写代码时,MVVM 工具包生成器现在将在后台为你生成其他代码,因此无需担心。 然后,此代码将编译并包含在应用程序中,因此最终结果与你手动编写所有其他代码的结果完全相同,但无需执行所有这些额外工作! 🎉
例如,如果不必正常设置可观察属性岂不很好:
private string? name;
public string? Name
{
get => name;
set => SetProperty(ref name, value);
}
可以只用一个简单的带批注的字段来表达相同的内容?
[ObservableProperty]
private string? name;
关于创建命令:
private void SayHello()
{
Console.WriteLine("Hello");
}
private ICommand? sayHelloCommand;
public ICommand SayHelloCommand => sayHelloCommand ??= new RelayCommand(SayHello);
如果我们只使用我们的方法,而没有其他方法怎么办?
[RelayCommand]
private void SayHello()
{
Console.WriteLine("Hello");
}
借助新的 MVVM 源生成器,一切皆有可能,甚至更多! 🙌
注意
源生成器可以独立于 MVVM 工具包中的其他现有功能使用,并且可以根据需要随意将源生成器与以前的 API 结合使用和匹配。 也就是说,可以随意地逐渐开始在新文件中使用源生成器,并最终迁移旧文件以使用它们来减少详细程度,但不必始终在整个项目或应用程序中使用任何一种方法。
这些文档将准确介绍 MVVM 生成器中包含的功能,以及如何使用这些功能:
- CommunityToolkit.Mvvm.ComponentModel
- CommunityToolkit.Mvvm.Input