CA1041: Proporcionar un mensaje ObsoleteAttribute
Nombre de tipo |
ProvideObsoleteAttributeMessage |
Identificador de comprobación |
CA1041 |
Categoría |
Microsoft.Design |
Cambio problemático |
Poco problemático |
Causa
Un tipo o miembro se marca mediante un atributo System.ObsoleteAttribute para la que no se ha especificado su propiedad ObsoleteAttribute.Message.
Descripción de la regla
ObsoleteAttribute se utiliza para marcar los tipos y miembros obsoletos de la biblioteca. Los consumidores de la biblioteca deberían evitar el uso de cualquier tipo o miembro marcado como obsoleto. Esto es porque puede que no se admita y que se quite finalmente de las versiones posteriores de la biblioteca. Cuando se compila un tipo o miembro marcado mediante ObsoleteAttribute, se muestra la propiedad Message del atributo. Esto proporciona información al usuario sobre el miembro o tipo obsoleto. Esta información generalmente incluye cuánto tiempo se sigue admitiendo el tipo o miembro obsoleto por los diseñadores de la biblioteca y el sustituto preferido que se va a utilizar.
Cómo corregir infracciones
Para corregir una infracción de esta regla, agregue el parámetro message al constructor ObsoleteAttribute.
Cuándo suprimir advertencias
No suprima una advertencia de esta regla porque la propiedad Message proporciona información importante sobre el tipo o miembro desusado.
Ejemplo
En el siguiente ejemplo se muestra un miembro obsoleto que tiene un ObsoleteAttribute declarado correctamente.
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";
}
}
};
}