MVVM ソース ジェネレーター

バージョン 8.0 以降、MVVM ツールキットには、MVVM アーキテクチャを使用してコードを記述するときに定型句を大幅に減らすのに役立つ、まったく新しい Roslyn ソース ジェネレーターが含まれています。 監視可能なプロパティやコマンドなどを設定する必要があるシナリオを簡略化できます。 ソース ジェネレーターに慣れていない場合は、それらの詳細については、 こちらをご覧ください。 これは、その動作の簡略化されたビューです。

Roslyn ソース ジェネレーター

つまり、コードを記述する際に、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 ジェネレーターに含まれている機能とその使用方法について詳しく説明します。

例示

  • MVVM Toolkit の動作を確認するには、 サンプル アプリ (複数の UI フレームワークの場合) を確認してください。
  • 単体テストでさらに例を見つけることもできます。