CA1041: Fornire una proprietà ObsoleteAttribute.Message

Proprietà valore
ID regola CA1041
Title Specificare una proprietà ObsoleteAttribute.Message
Categoria Progettazione
Correzione che causa un'interruzione o un'interruzione Nessuna interruzione
Abilitato per impostazione predefinita in .NET 8 Come suggerimento

Causa

Un tipo o un membro è contrassegnato utilizzando un System.ObsoleteAttribute attributo che non ha la relativa System.ObsoleteAttribute.Message proprietà specificata.

Per impostazione predefinita, questa regola esamina solo tipi e membri visibili esternamente, ma è configurabile.

Descrizione regola

ObsoleteAttribute viene usato per contrassegnare i tipi e i membri della libreria deprecati. I consumer di libreria devono evitare l'uso di qualsiasi tipo o membro contrassegnato come obsoleto. Ciò è dovuto al fatto che potrebbe non essere supportato e alla fine verrà rimosso dalle versioni successive della libreria. Quando viene compilato un tipo o un membro contrassegnato tramite ObsoleteAttribute , viene visualizzata la Message proprietà dell'attributo . In questo modo vengono fornite le informazioni utente sul tipo o sul membro obsoleto. Queste informazioni includono in genere il tempo per cui il tipo o il membro obsoleto sarà supportato dalle finestre di progettazione della libreria e dalla sostituzione preferita da usare.

Come correggere le violazioni

Per correggere una violazione di questa regola, aggiungere il message parametro al ObsoleteAttribute costruttore .

Quando eliminare gli avvisi

Non eliminare un avviso da questa regola perché la Message proprietà fornisce informazioni critiche sul tipo o sul membro obsoleto.

Configurare il codice da analizzare

Usare l'opzione seguente per configurare le parti della codebase in cui eseguire questa regola.

È possibile configurare questa opzione solo per questa regola, per tutte le regole a cui si applica o per tutte le regole in questa categoria (Progettazione) a cui si applica. Per altre informazioni, vedere Opzioni di configurazione delle regole di qualità del codice.

Includere superfici API specifiche

È possibile configurare le parti della codebase in modo da eseguire questa regola in base all'accessibilità. Ad esempio, per specificare che la regola deve essere eseguita solo sulla superficie dell'API non pubblica, aggiungere la coppia chiave-valore seguente a un file con estensione editorconfig nel progetto:

dotnet_code_quality.CAXXXX.api_surface = private, internal

Esempio

Nell'esempio seguente viene illustrato un membro obsoleto con un oggetto dichiarato ObsoleteAttributecorrettamente.

[ObsoleteAttribute("This property is obsolete and will be removed in a " +
"future version. Use the FullName property instead.", false)]
public string Name
{
    get => "Name";
}
Imports System

Namespace ca1041

    Public Class ObsoleteAttributeOnMember

        <ObsoleteAttribute("This property is obsolete and will " &
             "be removed in a future version. Use the FirstName " &
             "and LastName properties instead.", False)>
        ReadOnly Property Name As String
            Get
                Return "Name"
            End Get
        End Property

        ReadOnly Property FirstName As String
            Get
                Return "FirstName"
            End Get
        End Property

        ReadOnly Property LastName As String
            Get
                Return "LastName"
            End Get
        End Property

    End Class

End Namespace

Vedi anche