CA1721:プロパティ名は get メソッドと同一にすることはできません
プロパティ | 値 |
---|---|
ルール ID | CA1721 |
Title | プロパティ名は get メソッドと同一にすることはできません |
[カテゴリ] | 名前を付ける |
修正が中断ありか中断なしか | あり |
.NET 8 では既定で有効 | いいえ |
原因
メンバーの名前が、’Get’ から始まっているか、プロパティの名前と一致します。 たとえば、'GetColor' という名前のメソッドと 'Color' という名前のプロパティがある型には、規則違反が発生します。 プロパティまたはメソッドのいずれかが ObsoleteAttribute でマークされている場合、この規則は発動しません。
デフォルトでは、この規則の対象は外部から参照可能なメンバーとプロパティのみですが、これは構成可能です。
規則の説明
"Get" メソッドとプロパティには、それぞれの機能を明確に区別する名前を指定しなければなりません。
名前付け規則では、共通言語ランタイムをターゲットとするライブラリの統一的な名前の付け方が規定されています。 これにより、新しいソフトウェア ライブラリを習得するまでの時間を一貫して短縮でき、マネージド コード開発の専門家によってライブラリが開発されたという信頼を顧客に与えることができます。
違反の修正方法
名前を変更して、先頭に 'Get' が付くメソッドの名前と一致しないようにします。
どのようなときに警告を抑制するか
この規則による警告は抑制しないでください。 この規則の例外の 1 つは、"Get" メソッドが IExtenderProvider インターフェイスの実装によって発生する場合です。
警告を抑制する
単一の違反を抑制するだけの場合は、ソース ファイルにプリプロセッサ ディレクティブを追加して無効にしてから、規則をもう一度有効にします。
#pragma warning disable CA1721
// The code that's violating the rule is on this line.
#pragma warning restore CA1721
ファイル、フォルダー、またはプロジェクトの規則を無効にするには、構成ファイルでその重要度を none
に設定します。
[*.{cs,vb}]
dotnet_diagnostic.CA1721.severity = none
詳細については、「コード分析の警告を抑制する方法」を参照してください。
分析するコードを構成する
次のオプションを使用して、コードベースのどの部分に対してこの規則を実行するか構成します。
このオプションを構成できる対象は、この規則だけ、それを適用するすべての規則、それを適用するこのカテゴリ (名前付け) のすべての規則のいずれかです。 詳細については、「コード品質規則の構成オプション」を参照してください。
特定の API サーフェイスを含める
ユーザー補助に基づいて、この規則を実行するコードベースの部分を構成できます。 たとえば、非パブリック API サーフェイスでのみ規則を実行するように指定するには、プロジェクトの .editorconfig ファイルに次のキーと値のペアを追加します。
dotnet_code_quality.CAXXXX.api_surface = private, internal
例
次の例には、この規則に違反するメソッドとプロパティが含まれています。
public class Test
{
public DateTime Date
{
get { return DateTime.Today; }
}
// Violates rule: PropertyNamesShouldNotMatchGetMethods.
public string GetDate()
{
return this.Date.ToString();
}
}
Imports System
Namespace ca1721
Public Class Test
Public ReadOnly Property [Date]() As DateTime
Get
Return DateTime.Today
End Get
End Property
' Violates rule: PropertyNamesShouldNotMatchGetMethods.
Public Function GetDate() As String
Return Me.Date.ToString()
End Function
End Class
End Namespace
関連規則
.NET