MVVM 源生成器

从 8.0 版本开始,MVVM Toolkit 包含全新的 Roslyn 源代码生成器,这将有助于在编写采用 MVVM 架构的代码时大幅减少样板代码。 它们可以简化需要设置可观察属性、命令等的方案。 如果不熟悉源生成器,可以 在此处阅读有关它们的详细信息。 这是工作原理的简化视图:

Roslyn 源生成器

这意味着,在编写代码时,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 工具包的操作。
  • 还可以在 单元测试中找到更多示例。