CA1041: укажите сообщение ObsoleteAttribute
TypeName |
ProvideObsoleteAttributeMessage |
CheckId |
CA1041 |
Категория |
Microsoft.Design |
Критическое изменение |
Не критическое |
Причина
Тип или член помечен атрибутом System.ObsoleteAttribute, для которого не указано свойство ObsoleteAttribute.Message.
Описание правила
Атрибут ObsoleteAttribute применяется к устаревшим типам или членам библиотеки. Потребители библиотеки не следует использовать любой тип или член, который помечен как устаревший. Это связано с тем, что такой тип или член может не поддерживаться и в итоге будет удален из следующих версий библиотеки. При компиляции типа или члена, помеченного атрибутом ObsoleteAttribute, отображается свойство Message этого атрибута. Это предоставляет пользователю сведения об устаревшем типе или члене. В этой информации, как правило, сообщается, как долго устаревший тип или член будет поддерживаться разработчиками и какой компонент следует использовать вместо него.
Устранение нарушений
Чтобы устранить нарушение данного правила, добавьте параметр message в конструктор ObsoleteAttribute.
Отключение предупреждений
Не следует отключать предупреждения о нарушении данного правила, поскольку в свойстве Message содержится важная информация об устаревшем типе или члене.
Пример
В следующем примере показан устаревший член с правильно объявленным атрибутом ObsoleteAttribute.
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";
}
}
};
}