Marking Code as Deprecated in .NET

DevMicrosoftTechTip

Do you work on a team that shares code libraries? Have you ever wanted to implement a new method to replace an old one (with a differing signature) and simply deleted the old method? You can handle these situations easier by using an attribute on a class or method. The attribute is called Obsolete. This allows you to gracefully mark code as deprecated as shown below:

C#

   1: [Obsolete("This class has been deprecated.")]
   2: public class Test
   3: {
   4:     [Obsolete("This method has been deprecated.")]
   5:     public void FooBar () { }
   6: }

VB

   1: <Obsolete("This class has been deprecated.")>
   2: Public Class Test
   3:     <Obsolete("This method has been deprecated.")>
   4:     Public Sub FooBar()
   5:     End Sub 
   6: End Class

However, in the code above, both of these instances will only show a warning in the compiler. To throw an exception, you can add another property to the code to pass in a Boolean value to throw an exception as shown below:

C#

   1: [Obsolete("This class has been deprecated.", true)]
   2: public class Test
   3: {
   4:     [Obsolete("This method has been deprecated.", true)]
   5:     public void FooBar () { }
   6: }

VB

   1: <Obsolete("This class has been deprecated.", True)>
   2: Public Class Test
   3:     <Obsolete("This method has been deprecated.", True)>
   4:     Public Sub FooBar()
   5:     End Sub 
   6: End Class
Oct 4 2012 12:15 PM