CA2217: Numaralandırmaları FlagsAttribute ile işaretlemeyin

Özellik Değer
Kural Kimliği CA2217
Başlık Sabit listelerini FlagsAttribute ile işaretlemeyin
Kategori Kullanım
Hataya neden olan veya bozulmayan düzeltme Hataya neden olmayan
.NET 8'de varsayılan olarak etkin Hayır

Neden

Bir sabit listesi ile FlagsAttribute işaretlenir ve sabit listesi üzerinde iki veya diğer tanımlı değerlerin birleşimi olmayan bir veya daha fazla değere sahiptir.

Varsayılan olarak, bu kural yalnızca dışarıdan görünen numaralandırmalara bakar, ancak bu yapılandırılabilir.

Kural açıklaması

Numaralandırmanın mevcut olması FlagsAttribute için numaralandırmada tanımlanan her değerin iki veya tanımlı değerlerin bir bileşimi olması gerekir.

İhlalleri düzeltme

Bu kuralın ihlalini düzeltmek için numaralandırmadan kaldırın FlagsAttribute .

Uyarıların ne zaman bastırılması gerekiyor?

Bu kuraldan uyarıyı bastırmayın.

Çözümlemek için kod yapılandırma

Bu kuralın kod tabanınızın hangi bölümlerinde çalıştırılacaklarını yapılandırmak için aşağıdaki seçeneği kullanın.

Bu seçeneği yalnızca bu kural, geçerli olduğu tüm kurallar veya bu kategorideki (Kullanım) tüm kurallar için yapılandırabilirsiniz. Daha fazla bilgi için bkz . Kod kalitesi kuralı yapılandırma seçenekleri.

Belirli API yüzeylerini ekleme

Bu kuralın üzerinde çalıştırılacak kod tabanınızın hangi bölümlerini erişilebilirliklerine göre yapılandırabilirsiniz. Örneğin, kuralın yalnızca genel olmayan API yüzeyinde çalıştırılması gerektiğini belirtmek için projenizdeki bir .editorconfig dosyasına aşağıdaki anahtar-değer çiftini ekleyin:

dotnet_code_quality.CAXXXX.api_surface = private, internal

Örnekler

Aşağıdaki kod, Color3 değerini içeren bir numaralandırmayı gösterir. 3, iki güç veya tanımlı değerlerden herhangi birinin birleşimi değildir. Numaralandırma Color ile FlagsAttributeişaretlenmemelidir.

// Violates this rule    
[FlagsAttribute]
public enum Color
{
    None = 0,
    Red = 1,
    Orange = 3,
    Yellow = 4
}
Imports System

Namespace Samples

    ' Violates this rule    
    <FlagsAttribute()> _
    Public Enum Color

        None = 0
        Red = 1
        Orange = 3
        Yellow = 4

    End Enum
End Namespace

Aşağıdaki kod, Daysile FlagsAttributeişaretlenme gereksinimlerini karşılayan bir numaralandırmayı gösterir:

[FlagsAttribute]
public enum Days
{
    None = 0,
    Monday = 1,
    Tuesday = 2,
    Wednesday = 4,
    Thursday = 8,
    Friday = 16,
    All = Monday | Tuesday | Wednesday | Thursday | Friday
}
Imports System
Namespace Samples

    <FlagsAttribute()> _
    Public Enum Days

        None = 0
        Monday = 1
        Tuesday = 2
        Wednesday = 4
        Thursday = 8
        Friday = 16
        All = Monday Or Tuesday Or Wednesday Or Thursday Or Friday

    End Enum
End Namespace

CA1027: Numaralandırmaları FlagsAttribute ile işaretleyin

Ayrıca bkz.