ObsoleteAttribute
ObsoleteAttribute
ObsoleteAttribute
ObsoleteAttribute
Class
Definition
Marks the program elements that are no longer in use. This class cannot be inherited.
public ref class ObsoleteAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Struct | System.AttributeTargets.Enum | System.AttributeTargets.Constructor | System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Field | System.AttributeTargets.Event | System.AttributeTargets.Interface | System.AttributeTargets.Delegate, Inherited=false)]
[System.Runtime.InteropServices.ComVisible(true)]
[System.AttributeUsage(System.AttributeTargets.Class | System.AttributeTargets.Constructor | System.AttributeTargets.Delegate | System.AttributeTargets.Enum | System.AttributeTargets.Event | System.AttributeTargets.Field | System.AttributeTargets.Interface | System.AttributeTargets.Method | System.AttributeTargets.Property | System.AttributeTargets.Struct, Inherited=false)]
[Serializable]
public sealed class ObsoleteAttribute : Attribute
type ObsoleteAttribute = class
inherit Attribute
Public NotInheritable Class ObsoleteAttribute
Inherits Attribute
- Inheritance
- Attributes
Examples
The following example defines a class that contains a property and a method that are marked with the ObsoleteAttribute attribute. Accessing the value of the OldProperty property in code generates a compiler warning, but calling the CallOldMethod method generates a compiler error. The example also shows the output that results when you attempt to compile the source code.
using System;
using System.Reflection;
public class Example
{
// Mark OldProperty As Obsolete.
[ObsoleteAttribute("This property is obsolete. Use NewProperty instead.", false)]
public static string OldProperty
{ get { return "The old property value."; } }
public static string NewProperty
{ get { return "The new property value."; } }
// Mark CallOldMethod As Obsolete.
[ObsoleteAttribute("This method is obsolete. Call CallNewMethod instead.", true)]
public static string CallOldMethod()
{
return "You have called CallOldMethod.";
}
public static string CallNewMethod()
{
return "You have called CallNewMethod.";
}
public static void Main()
{
Console.WriteLine(OldProperty);
Console.WriteLine();
Console.WriteLine(CallOldMethod());
}
}
// The attempt to compile this example produces output like the following output:
// Example.cs(31,25): error CS0619: 'Example.CallOldMethod()' is obsolete:
// 'This method is obsolete. Call CallNewMethod instead.'
// Example.cs(29,25): warning CS0618: 'Example.OldProperty' is obsolete:
// 'This property is obsolete. Use NewProperty instead.'
Imports System.Reflection
Public Module Example
' Mark OldProperty As Obsolete.
<ObsoleteAttribute("This property is obsolete. Use NewProperty instead.", False)>
Public ReadOnly Property OldProperty As String
Get
Return "The old property value."
End Get
End Property
Public ReadOnly Property NewProperty As String
Get
Return "The new property value."
End Get
End Property
' Mark OldMethod As Obsolete.
<ObsoleteAttribute("This method is obsolete. Call CallNewMethod instead.", True)>
Public Function CallOldMethod() As String
Return "You have called CallOldMethod."
End Function
Public Function CallNewMethod() As String
Return "You have called NewMethod."
End Function
Public Sub Main()
Console.WriteLine(OldProperty)
Console.WriteLine()
Console.WriteLine(CallOldMethod())
End Sub
End Module
' The attempt to compile this example produces output like the following:
' Example.vb(30) : warning BC40000: 'Public ReadOnly Property OldProperty As String' is obsolete:
' 'This property is obsolete. Use NewProperty instead.'.
'
' Console.WriteLine(OldProperty)
' ~~~~~~~~~~~
' Example.vb(32) : error BC30668: 'Public Function CallOldMethod() As String' is obsolete:
' 'This method is obsolete. Call CallNewMethod instead.'.
'
' Console.WriteLine(CallOldMethod())
' ~~~~~~~~~~~~~
Remarks
ObsoleteAttribute is applicable to all program elements except assemblies, modules, parameters, and return values. Marking an element as obsolete informs users that the element will be removed in future versions of the product.
The ObsoleteAttribute class includes two properties:
Message. The string assigned to the Message property is emitted by the compiler when the attribute target is used in code. The string should note that the attribute target is obsolete and, if possible, provide some workaround or programmatic alternative.
IsError. This is a Boolean value that indicates to the compiler whether using the ObsoleteAttribute attribute should cause it to emit an error (IsError is
true) or a warning (IsError isfalse).
For more information about using attributes, see Attributes.
Windows 8.x Store Apps
When you create a Windows Metadata library (.winmd file), the ObsoleteAttribute is exported as both the ObsoleteAttribute attribute and the Windows.Foundation.Metadata.DeprecatedAttribute attribute if only the ObsoleteAttribute is present in source code. The ObsoleteAttribute is transformed to the DeprecatedAttribute as follows:
If the
messageanderrorarguments are both present,messageis assigned to theDeprecatedAttributemessageargument. An error value oftruemaps to DeprecationType.Remove, and anerrorvalue offalsemaps to DeprecationType.Deprecate.If the
messageargument is not supplied in the ObsoleteAttribute, its default value in theDeprecatedAttributeis "element_name is deprecated", where element_name is the name of the target program element to which the attribute is applied.If the
errorargument is not present in the ObsoleteAttribute, its default value in theDeprecatedAttributeis DeprecationType.Deprecate.
Important
Directly applying the Windows.Foundation.Metadata.DeprecatedAttribute attribute to managed code is not recommended, because this export occurs automatically.
Constructors
| ObsoleteAttribute() ObsoleteAttribute() ObsoleteAttribute() ObsoleteAttribute() |
Initializes a new instance of the ObsoleteAttribute class with default properties. |
| ObsoleteAttribute(String) ObsoleteAttribute(String) ObsoleteAttribute(String) ObsoleteAttribute(String) |
Initializes a new instance of the ObsoleteAttribute class with a specified workaround message. |
| ObsoleteAttribute(String, Boolean) ObsoleteAttribute(String, Boolean) ObsoleteAttribute(String, Boolean) ObsoleteAttribute(String, Boolean) |
Initializes a new instance of the ObsoleteAttribute class with a workaround message and a Boolean value indicating whether the obsolete element usage is considered an error. |
Properties
| IsError IsError IsError IsError |
Gets a Boolean value indicating whether the compiler will treat usage of the obsolete program element as an error. |
| Message Message Message Message |
Gets the workaround message, including a description of the alternative program elements. |
| TypeId TypeId TypeId TypeId |
When implemented in a derived class, gets a unique identifier for this Attribute. (Inherited from Attribute) |
Methods
| Equals(Object) Equals(Object) Equals(Object) Equals(Object) |
Returns a value that indicates whether this instance is equal to a specified object. (Inherited from Attribute) |
| GetHashCode() GetHashCode() GetHashCode() GetHashCode() |
Returns the hash code for this instance. (Inherited from Attribute) |
| GetType() GetType() GetType() GetType() |
Gets the Type of the current instance. (Inherited from Object) |
| IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute() IsDefaultAttribute() |
When overridden in a derived class, indicates whether the value of this instance is the default value for the derived class. (Inherited from Attribute) |
| Match(Object) Match(Object) Match(Object) Match(Object) |
When overridden in a derived class, returns a value that indicates whether this instance equals a specified object. (Inherited from Attribute) |
| MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone() |
Creates a shallow copy of the current Object. (Inherited from Object) |
| ToString() ToString() ToString() ToString() |
Returns a string that represents the current object. (Inherited from Object) |