# ObsoleteAttribute

***

**1.** Mark a method as obsolete:

```csharp
[Obsolete("Use GetName() instead.")]
public string GetFullName()
{
    return GetName();
}
```

**2.** Mark a property as obsolete:

```csharp
[Obsolete("Use Name property instead.")]
public string FullName
{
    get { return Name; }
    set { Name = value; }
}
```

**3.** Mark a class as obsolete:

```csharp
[Obsolete("Use Person class instead.")]
public class Employee
{
    public string Name { get; set; }
}
```

**4.** Mark an interface as obsolete:

```csharp
[Obsolete("Use IPerson interface instead.")]
public interface IEmployee
{
    string Name { get; set; }
}
```

**5.** Mark an enumeration as obsolete:

```csharp
[Obsolete("Use Gender enumeration instead.")]
public enum Sex
{
    Male,
    Female
}
```

**6.** Mark a parameter as obsolete:

```csharp
public void Update(string name, [Obsolete("Use age parameter instead.")] int years)
{
    Update(name, age);
}
```

**7.** Mark a return value as obsolete:

```csharp
[Obsolete("Use GetName() method instead.")]
public string GetFullName()
{
    return GetName();
}
```

**8.** Mark a field as obsolete:

```csharp
[Obsolete("Use Name field instead.")]
public string FullName;
```

**9.** Mark a delegate as obsolete:

```csharp
[Obsolete("Use EventHandler<T> delegate instead.")]
public delegate void MyEventHandler(object sender, EventArgs e);
```

**10.** Mark a keyword as obsolete:

```csharp
[Obsolete("Use 'new' keyword instead.")]
public void Create()
{
    new Foo();
}
```

**11.** Mark an attribute as obsolete:

```csharp
[Obsolete("Use SerializableAttribute attribute instead.")]
public class MyAttribute : Attribute
{
}
```

**12.** Mark a type parameter as obsolete:

```csharp
public class MyList<T>
{
    [Obsolete("Use Add<T>() method instead.")]
    public void Add(T item)
    {
        Add<T>(item);
    }
}
```

**13.** Mark a member as obsolete in base class:

```csharp
public class BaseClass
{
    [Obsolete("Use GetName() method in derived class.")]
    public virtual string GetFullName()
    {
        return GetName();
    }
}
```

**14.** Mark a member as obsolete in derived class:

```csharp
public class DerivedClass : BaseClass
{
    [Obsolete("Use GetFullName() method instead.")]
    public override string GetName()
    {
        return GetFullName();
    }
}
```

**15.** Mark a member as obsolete for specific platforms:

```csharp
[Obsolete("This method is obsolete for Linux platform.")]
public string GetPath()
{
    return Path.GetTempPath();
}
```

**16.** Mark a member as obsolete with a custom error message:

```csharp
[Obsolete("This method is obsolete. Please use GetName() method instead.", true)]
public string GetFullName()
{
    return GetName();
}
```

**17.** Mark a member as obsolete with a diagnostic ID:

```csharp
[Obsolete("This method is obsolete.", DiagnosticId = "MyDiagnosticID")]
public string GetFullName()
{
    return GetName();
}
```

**18.** Mark a member as obsolete with a URL:

```csharp
[Obsolete("This method is obsolete. See https://mywebsite.com for more information.", Url = "https://mywebsite.com")]
public string GetFullName()
{
    return GetName();
}
```

**19.** Mark a member as obsolete with a deprecation message:

```csharp
[Obsolete("This method is obsolete. Use GetName() method instead.")]
public string GetFullName()
{
    return GetName();
}
```

**20.** Mark a member as obsolete with a recommended replacement:

```csharp
[Obsolete("This method is obsolete. Use GetName() method instead.", IsError = false)]
public string GetFullName()
{
    return GetName();
}
```

**21.** Mark a member as obsolete for a specific version:

```csharp
[Obsolete("This method is obsolete since version 2.0.", VersionAdded = "2.0")]
public string GetFullName()
{
    return GetName();
}
```

**22.** Mark a member as obsolete for a specific version range:

```csharp
[Obsolete("This method is obsolete from version 1.0 to 2.0.", VersionAdded = "1.0", VersionDeprecated = "2.0")]
public string GetFullName()
{
    return GetName();
}
```

**23.** Mark a member as obsolete with a custom message:

```csharp
[Obsolete("This method is obsolete. This message will be shown in compiler errors.")]
public string GetFullName()
{
    return GetName();
}
```

**24.** Mark a member as obsolete with a custom severity level:

```csharp
[Obsolete("This method is obsolete.", DiagnosticId = "MyDiagnosticID", Severity = DiagnosticSeverity.Warning)]
public string GetFullName()
{
    return GetName();
}
```

**25.** Mark a member as obsolete with a custom error code:

```csharp
[Obsolete("This method is obsolete.", DiagnosticId = "MyDiagnosticID", ErrorCode = 1234)]
public string GetFullName()
{
    return GetName();
}
```

**26.** Mark a member as obsolete with a custom help link:

```csharp
[Obsolete("This method is obsolete.", DiagnosticId = "MyDiagnosticID", HelpLinkUri = "https://mywebsite.com")]
public string GetFullName()
{
    return GetName();
}
```

**27.** Mark a member as obsolete with a custom message and severity level:

```csharp
[Obsolete("This method is obsolete.", DiagnosticId = "MyDiagnosticID", Severity = DiagnosticSeverity.Error, Message = "This is a custom message.")]
public string GetFullName()
{
    return GetName();
}
```

**28.** Mark a member as obsolete with a custom message and error code:

```csharp
[Obsolete("This method is obsolete.", DiagnosticId = "MyDiagnosticID", ErrorCode = 1234, Message = "This is a custom message.")]
public string GetFullName()
{
    return GetName();
}
```

**29.** Mark a member as obsolete with a custom message and help link:

```csharp
[Obsolete("This method is obsolete.", DiagnosticId = "MyDiagnosticID", HelpLinkUri = "https://mywebsite.com", Message = "This is a custom message.")]
public string GetFullName()
{
    return GetName();
}
```

**30.** Mark a member as obsolete with a custom severity level and error code:

```csharp
[Obsolete("This method is obsolete.", DiagnosticId = "MyDiagnosticID", ErrorCode = 1234, Severity = DiagnosticSeverity.Warning)]
public string GetFullName()
{
    return GetName();
}
```

**31.** Mark a member as obsolete with a custom severity level and help link:

```csharp
[Obsolete("This method is obsolete.", DiagnosticId = "MyDiagnosticID", HelpLinkUri = "https://mywebsite.com", Severity = DiagnosticSeverity.Error)]
public string GetFullName()
{
    return GetName();
}
```

**32.** Mark a member as obsolete with a custom error code and help link:

```csharp
[Obsolete("This method is obsolete.", DiagnosticId = "MyDiagnosticID", ErrorCode = 1234, HelpLinkUri = "https://mywebsite.com")]
public string GetFullName()
{
    return GetName();
}
```

**33.** Mark a member as obsolete with a custom message, severity level, error code, and help link:

```csharp
[Obsolete("This method is obsolete.", DiagnosticId = "MyDiagnosticID", ErrorCode = 1234, Severity = DiagnosticSeverity.Error, Message = "This is a custom message.", HelpLinkUri = "https://mywebsite.com")]
public string GetFullName()
{
    return GetName();
}
```

**34.** Mark a member as obsolete with a custom message, severity level, and error code (using named parameters):

```csharp
[Obsolete(Message = "This method is obsolete.", Severity = DiagnosticSeverity.Error, ErrorCode = 1234)]
public string GetFullName()
{
    return GetName();
}
```

**35.** Mark a member as obsolete with a custom message, error code, and help link (using named parameters):

```csharp
[Obsolete(Message = "This method is obsolete.", ErrorCode = 1234, HelpLinkUri = "https://mywebsite.com")]
public string GetFullName()
{
    return GetName();
}
```

**36.** Mark a member as obsolete with a custom severity level, error code, and help link (using named parameters):

```csharp
[Obsolete(Severity = DiagnosticSeverity.Error, ErrorCode = 1234, HelpLinkUri = "https://mywebsite.com")]
public string GetFullName()
{
    return GetName();
}
```

**37.** Mark a member as obsolete with a custom message, severity level, error code, and help link (using named parameters):

```csharp
[Obsolete(Message = "This method is obsolete.", Severity = DiagnosticSeverity.Error, ErrorCode = 1234, HelpLinkUri = "https://mywebsite.com")]
public string GetFullName()
{
    return GetName();
}
```

**38.** Mark a member as obsolete with a custom message, severity level, and isError flag (using named parameters):

```csharp
[Obsolete(Message = "This method is obsolete.", Severity = DiagnosticSeverity.Error, IsError = true)]
public string GetFullName()
{
    return GetName();
}
```

**39.** Mark a member as obsolete with a custom message, error code, and isError flag (using named parameters):

```csharp
[Obsolete(Message = "This method is obsolete.", ErrorCode = 1234, IsError = true)]
public string GetFullName()
{
    return GetName();
}
```

**40.** Mark a member as obsolete with a custom severity level, error code, and isError flag (using named parameters):

```csharp
[Obsolete(Severity = DiagnosticSeverity.Error, ErrorCode = 1234, IsError = true)]
public string GetFullName()
{
    return GetName();
}
```

**41.** Mark a member as obsolete with a custom message, severity level, error code, and isError flag (using named parameters):

```csharp
[Obsolete(Message =

```
