次の方法で共有


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