CA1717: FlagsAttribute 列挙のみが複数形の名前を含んでいなければなりません
TypeName |
OnlyFlagsEnumsShouldHavePluralNames |
CheckId |
CA1717 |
[カテゴリ] |
Microsoft.Naming |
互換性に影響する変更点 |
あり |
原因
外部から参照できる列挙体の名前の末尾が複数形の単語であり、その列挙体が System.FlagsAttribute 属性でマークされていません。
規則の説明
名前付け規則では、列挙体の複数形の名前は同時に複数の列挙値を指定できることを意味します。FlagsAttribute を指定すると、コンパイラはその列挙体をビットごとの操作が可能なビット フィールドと見なします。
列挙値を一度に 1 つしか指定できない列挙体には、名前に単数形の語を使用します。たとえば、曜日を定義する列挙体があり、複数の曜日を指定できるアプリケーションでの使用を目的としているとします。このような列挙体には FlagsAttribute を追加し、名前は ”Days” などとします。同じような列挙体で、1 つの曜日しか指定できない場合は、この属性を追加せず、名前は ”Day” などとします。
名前付け規則では、共通言語ランタイムをターゲットとするライブラリの統一的な名前の付け方が規定されています。これにより、新しいソフトウェア ライブラリを習得するまでの時間を短縮でき、マネージ コード開発の専門家によってライブラリが開発されたという信頼を顧客に与えることができます。
違反の修正方法
列挙体の名前を単数形の語にするか、FlagsAttribute を追加します。
警告を抑制する状況
名前の末尾が単数形の語である場合は、この規則による警告を抑制しても安全です。
関連規則
CA1714: フラグ列挙は、複数形の名前を含んでいなければなりません
CA1027: FlagsAttribute で列挙値をマークします
CA2217: enums を FlagsAttribute に設定しません