CA1041: Fornire una proprietà ObsoleteAttribute.Message
TypeName |
ProvideObsoleteAttributeMessage |
CheckId |
CA1041 |
Category |
Microsoft.Design |
Breaking Change |
Non sostanziale |
Causa
Un tipo o un membro è contrassegnato con un attributo System.ObsoleteAttribute per cui non è specificata la proprietà ObsoleteAttribute.Message.
Descrizione della regola
L'oggetto ObsoleteAttribute è utilizzato per contrassegnare tipi e membri di libreria deprecati.Gli utenti della libreria dovrebbero evitare l'utilizzo di qualsiasi tipo o membro contrassegnato come obsoleto.Questo si verifica perché potrebbe non essere supportato e venire rimosso dalle versioni successive della libreria.Quando viene compilato un membro o un tipo contrassegnato utilizzando ObsoleteAttribute, viene visualizzata la proprietà Message dell'attributo.In questo modo vengono fornite le informazioni utente sul tipo o sul membro obsoleto.Queste informazioni includono in genere per quanto tempo il tipo o il membro obsoleto verrà supportato dai progettisti di librerie e l'elemento sostitutivo consigliato da utilizzare.
Come correggere le violazioni
Per correggere una violazione di questa regola, aggiungere il parametro message al costruttore ObsoleteAttribute.
Esclusione di avvisi
Non escludere un avviso da questa regola poiché la proprietà Message fornisce informazioni essenziali sul tipo o membro obsoleto.
Esempio
Nell'esempio seguente viene illustrato un membro obsoleto che dispone di un oggetto ObsoleteAttribute dichiarato in modo corretto.
Imports System
Namespace DesignLibrary
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
using System;
namespace DesignLibrary
{
public class ObsoleteAttributeOnMember
{
[ObsoleteAttribute("This property is obsolete and will " +
"be removed in a future version. Use the FirstName " +
"and LastName properties instead.", false)]
public string Name
{
get
{
return "Name";
}
}
public string FirstName
{
get
{
return "FirstName";
}
}
public string LastName
{
get
{
return "LastName";
}
}
}
}
using namespace System;
namespace DesignLibrary
{
public ref class ObsoleteAttributeOnMember
{
public:
[ObsoleteAttribute("This property is obsolete and will "
"be removed in a future version. Use the FirstName "
"and LastName properties instead.", false)]
property String^ Name
{
String^ get()
{
return "Name";
}
}
property String^ FirstName
{
String^ get()
{
return "FirstName";
}
}
property String^ LastName
{
String^ get()
{
return "LastName";
}
}
};
}