MVVM 源生成器

从版本 8.0 开始,MVVM 工具包包含全新的 Roslyn 源生成器,有助于在使用 MVVM 体系结构编写代码时大幅减少样本。 它们可以简化需要设置可观察属性、命令等的方案。 如果你不熟悉源生成器,可以在此处详细了解。 以下是工作原理的简化图:

Roslyn source generators

这意味着当你编写代码时,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 生成器中包含的功能,以及如何使用这些功能:

示例

  • 查看示例应用(适用于多个 UI 框架),以了解 MVVM 工具包的实际运行情况。
  • 还可以在单元测试中查找更多示例。