ReSharper 2020.3 ヘルプ

INotifyPropertyChanged サポート

INotifyPropertyChanged インターフェースは、.NET アプリケーションで、プロパティの値が変更されたときに通知を送信するために広く使用されています。ReSharper には、このインターフェースを実装するための一連の機能が用意されています。

ReSharper は、以下のフレームワークのプロパティ変更通知を実装できます。

  • MVVM ライト (WPF、Silverlight、Windows Phone、ユニバーサルアプリ)

  • Caliburn.Micro (WPF、Silverlight、Windows Phone、ユニバーサルアプリ)

  • Prism (WPF; Silverlight、Windows フォン)

  • Catel (WPF、Silverlight、Windows Phone、WinRT、ASP.NET MVC)

  • MVVM ヘルパー (WPF 3 と 4、ラムダ式のみサポート)

まず、ReSharper は、INotifyPropertyChanged インターフェースが使用されていることを検出し、必要な実装を適所に置く特別なクイックフィックスを提供します。

ReSharper: INotifyPropertyChanged support

クイックフィックスを適用した後、ReSharper はプロパティ変更通知のメソッドを生成し、このメソッドの名前を入力するように求めます。

ReSharper: INotifyPropertyChanged support

上の図からわかるように、生成されたメソッドは [NotifyPropertyChangedInvocator] 属性でマークされています。これは、プロパティへの変更通知の追加、文字列リテラル内のプロパティ名の検証と完了、プロパティへのナビゲーション、サポートを含む INotifyPropertyChanged インターフェースの完全サポートを可能にします。リファクタリングとコード生成実装を生成する前に、ReSharper アノテーション属性をプロジェクトに追加することをお勧めします。

変更について通知しないプロパティがクラスにある場合、対応するコンテキストアクションを使用して、変更通知でプロパティに簡単に変換できます(通知メソッドが [NotifyPropertyChangedInvocator] 属性で装飾されている場合にのみ使用できます)。

ReSharper: INotifyPropertyChanged support

既存のフィールドのプロパティを生成し、[NotifyPropertyChangedInvocator] 属性で装飾されたメソッドがある場合、生成ダイアログのプロパティの変更について通知するチェックボックスを選択して、変更通知のあるプロパティを取得できます。

ReSharper: INotifyPropertyChanged support

また、ReSharper は、OnPropertyChanged メソッドに渡される引数に対してコードインスペクションコード補完を提供します。

ReSharper は、.NET フレームワーク 4.5 プロジェクトで INotifyPropertyChanged を実装するときに、発信者情報属性を利用します。また、冗長な引数をハイライトし、クイックフィックスを提案することにより、CallerMemberName ベースの実装への移行にも役立ちます。

ReSharper: INotifyPropertyChanged support

関連ページ:

コードアノテーション属性

フレームワークは、以下で説明する多くの属性を提供します。これらの属性をコードで使用するには、ソースコードのアノテーションセクションの説明に従ってを参照する必要があります。アノテーション属性:CanBeNullAttribute マークされた要素の値がになることがあることを示します。そのため、使用前にのチェックが必要です。サンプル [CanBeNull] object Test() => null; void UseTest() { var p = Test(); var s = p.ToSt...

ソースコードのアノテーション

ReSharper のコードアノテーションの恩恵を受ける最も簡単な方法は、ソースコードのシンボルにアノテーション属性を追加し、ReSharper がソリューションをより正確かつ洞察力で分析できるようにすることです。デフォルトでは、すべてのアノテーション属性クラスは属性でマークされているため、コンパイラーはコード内の属性の使用を無視します。つまり、'JetBrains.Annotations.dll' アセンブリへのバイナリ参照は生成されません。ただし、プロジェクトで「JETBRAINS_ANNO...

コンテキストアクション

コンテキストアクションのいくつかの例を ReSharperWeb サイトでチェックすることができます。コンテキストアクションは、エディターで直接利用できるコード変換ヘルパーです。クイックフィックスとは対照的に、コンテキストアクションは問題の解決やコードの改善を目的としているためはなく、アクセス修飾子の変更、null をチェックするコードの生成、'foreach' の 'for' への変換などの小さな変更を素早く導入できます。コードベースのより大きな変換のために、ReSharper は数十の自動化さ...