When should I use attribute in C#?

In the .NET Framework, attributes can be used for many reasons — like

  • Defining which classes are
    serializable

  • Choosing which methods are exposed in
    a Web service

Attributes allow us to add descriptions to classes, properties, and methods at design time that can then be examined at runtime via reflection.

Consider this example:

Say you have a class which has a method from older version which is still in use for any reason and now you have come up with a new version of the class which makes fantastic use of Generic List and LINQ and has a new method for similar purpose. You would like developers to prefer the new one provided in the later version of your library. How will you do that ? One way is to write in the documentation. A better way is to use attribute as follow.

public class AccountsManager
{
  [Obsolete("prefer GetAccountsList", true)]
  static Account[] GetAccounts( ) { }    
  static List<Account> GetAccountsList( ) { }      
}

If an obsolete method is used when the program is compiled, the developer gets this info and decides accordingly.

AccountManager.GetAccounts() is obsolete:
prefer GetAccountsList

We may also create and add Custom Attributes as per requirements.

Reference :

  • Using Attributes in C#

Hope this helps

Leave a Comment