コードインスペクション: 自動プロパティは get 専用(非 private アクセシビリティ)にできます
C# 6.0 以降では、get 専用の自動プロパティを定義できます。これは、 readonly フィールドと同様に、コンストラクターまたはイニシャライザーによってのみ初期化できます。 JetBrains Rider は、コンストラクターまたはイニシャライザーから初期化され、書き込みの使用がない自動プロパティの冗長な set アクセサーを検出し、削除を支援します。
次の例では、イミュータブル クラスが想定されており、 Name プロパティの値はコンストラクターで null 許容性がチェックされると、その後 null チェックをせずに安全に使用できます。 ただし、private setter ではプライベートメンバー内でプロパティが後で変更されないことは保証できません。 そのため、このプロパティは取得専用にして変更を防ぐことをおすすめします。
ソリューション全体のインスペクションを機能させるには、次の少なくとも 1 つを有効にする必要があります。
簡易的なグローバル使用状況チェック: JetBrains Rider 設定 の ページで ソリューション全体の分析がオフの場合に、未使用の非プライベートタイプメンバーを表示する を選択し、 Ctrl+Alt+S を実行します。
ソリューション全体解析: JetBrains Rider 設定 の ページで ソリューション全体の分析を有効化する を選択します Ctrl+Alt+S。
報告されたプロパティ setter がソリューション内で直接使用されていない場合でも、間接的 (たとえばリフレクション経由) に使用される場合や、単にパブリック API として設計されている場合があります。 これらのすべてのケースでは、次のいずれかの方法で、プロパティ setter の使用状況チェックインスペクションを 抑制する必要があります。
推奨される方法は、暗黙的に使用されるプロパティ setter に コードアノテーション属性を付与することです。 この目的のために、 [UsedImplicitly] と [PublicAPI] の属性があり、これらは機能的に似ていますが、プロパティ setter が実際にどう使われているか、自分やチームメンバーが理解できるようになります。
また、カスタム属性を使用してインスペクションの使用状況を抑制することもできます。 これを行うには、その属性の定義に [MeansImplicitUse] 属性を付けます。
そして最後に、特定の使用チェックインスペクションを、 抑制コメントまたは抑制属性を持つ他のコードインスペクションと同様に抑制することができます。