バージョン 8.0 以降、MVVM ツールキットにはまったく新しい Roslyn ソース ジェネレーターが含まれるようになり、MVVM アーキテクチャを使用してコードを記述するときに定型句を大幅に削減できます。 監視可能なプロパティやコマンドなどを設定する必要があるシナリオを簡略化できます。 ソース ジェネレーターに慣れていない場合は、それらの詳細をこちらで参照してください。 これは、その動作を簡略化した図です。
つまり、コードを記述する際に、MVVM Toolkit ジェネレーターがバックグラウンドで追加のコードを生成してくれるので、自分で行う必要はありません。 このコードはコンパイルされ、アプリケーションに含まれるので、最終的な結果は、追加のコードをすべて手動で記述した場合とまったく同じになりますが、その追加作業は一切行う必要がありません。 🎉
たとえば、監視可能なプロパティを通常どおりに設定する代わりに:
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 ソース ジェネレーターを使用すると、このすべての処理に加え、さらに多くを行うことができます。 🙌
Note
ソース ジェネレーターは MVVM Toolkit の他の既存の機能とは別に使用でき、必要に応じて、ソース ジェネレーターの使用を以前の API と自由に組み合わせることができます。 つまり、任意で、新しいファイルでのソース ジェネレーターの使用を徐々に開始し、最終的にはそれらを使用するように古いファイルを移行して冗長性を削減していきますが、プロジェクトまたはアプリケーション全体で常にどちらかのアプローチを使用するという義務はありません。
これらのドキュメントでは、MVVM ジェネレーターに含まれている具体的な機能とそれらの使用方法について説明します。
- CommunityToolkit.Mvvm.ComponentModel
- CommunityToolkit.Mvvm.Input
例
MVVM Toolkit