CA1717:隻有 FlagsAttribute 枚舉應采用複數形式的名稱

規則 ID

CA1717

類别

命名

修複是中斷修複還是非中斷修複

重大

原因

枚舉的名稱以複數形式結尾,并且枚舉未标記 System.FlagsAttribute 特性。

預設情況下,此規則僅檢視外部可見的枚舉,但這是可配置的。

規則說明

命名約定規定,複數形式的枚舉名稱表示可以同時指定多個枚舉值。 FlagsAttribute 告訴編譯器,應将枚舉視為對枚舉啟用位運算的位字段。

如果一次隻能指定一個枚舉值,則枚舉的名稱應為單數形式。 例如,定義星期的枚舉可能适用于可指定多天的應用程式。 此枚舉應該具有 FlagsAttribute,并且可稱為“Days”。 類似的枚舉如果隻允許指定一天,則不具有該屬性,可以稱為“Day”。

命名約定為面向公共語言運作時的庫提供常見外觀。 這縮短了學習新軟體庫所需的時間,讓客戶更加相信該庫是由擁有開發托管代碼專業知識的人員所開發。

如何解決沖突

将枚舉名稱設定為單數形式或添加 FlagsAttribute。

何時禁止顯示警告

如果名稱以單數形式結尾,可以禁止顯示規則發出的警告。

配置代碼以進行分析

使用下面的選項來配置代碼庫的哪些部分要運作此規則。

包含特定的 API 圖面

你可以僅為此規則、為所有規則或為此類别(命名)中的所有規則配置此選項。 有關詳細資訊,請參閱代碼品質規則配置選項。

包含特定的 API 圖面

你可以根據代碼庫的可通路性,配置要針對其運作此規則的部分。 例如,若要指定規則應僅針對非公共 API 圖面運作,請将以下鍵值對添加到項目中的 .editorconfig 檔案:

dotnet_code_quality.CAXXXX.api_surface = private, internal

相關規則

CA1714:Flags 枚舉應采用複數形式的名稱

CA1027:用 FlagsAttribute 标記枚舉

CA2217:不要使用 FlagsAttribute 标記枚舉

另請參閱

System.FlagsAttribute

枚舉設計