分享方式:


CA1721:屬性名稱不應該和其中有 get 的方法名稱相符

屬性
規則識別碼 CA1721
標題 屬性名稱不應該和其中有 get 的方法名稱相符
類別 命名
修正程式是中斷或非中斷 中斷
預設在 .NET 8 中啟用 No

原因

成員的名稱以 『Get』 開頭,否則會符合屬性的名稱。 例如,包含名為 『GetColor』 的方法,以及名為 『Color』 的屬性會導致規則違規的類型。 如果屬性或方法標示 ObsoleteAttribute為 ,則不會引發此規則。

根據預設,此規則只會查看外部可見的成員和屬性,但這是可設定

檔案描述

"Get" 方法和屬性的名稱應該清楚區別其功能。

命名慣例是以通用語言執行平台為目標的程式庫,提供一種通用的寫法。 此一致性可縮短學習新軟體連結庫所需的時間,並增加客戶對連結庫是由開發 Managed 程式代碼方面具有專業知識的人員所開發。

如何修正違規

變更名稱,使其不符合前面加上 『Get』 的方法名稱。

隱藏警告的時機

請勿隱藏此規則的警告。 該規則的一個例外狀況是,如果 “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