Attribute:
“An attribute is a piece of additional declarative information that is specified for a declaration.“
Attributes are needed to write codes in a better style, in a better way. Its may not be mandatory to use attributes in your coding but it should be used for a better architecture. It can be used to define both design-level information and run-time information. It can also be used to create self-describing components using attribute. .Net framework ships with several default attributes like [Serializable()] , [Obsolete()] etc. But what if you want to create your own attribute i.e custom attribute. Please find a simple example below.
Code for creating custom attribute
namespace ConsoleApplication1 { public class GreetWithFullName : Attribute { private bool bVal = false; public bool GetValue { get { return bVal; } } public GreetWithFullName(bool val) { bVal = val; } } }
Every custom attribute should be inherited from System. Attribute class [as shown above]. |
How to use your custom attribute |
namespace ConsoleApplication1 { [GreetWithFullName(true)] public class MFSEmployee { private string _firstName, _lastName; public MFSEmployee(string firstName, string lastName) { this._firstName = firstName; this._lastName = lastName; } public string SayHello() { string greetWith = string.Empty; Type type = this.GetType(); GreetWithFullName[] AttributeArray = (GreetWithFullName[])type.GetCustomAttributes(typeof(GreetWithFullName),false); if ((AttributeArray.Length > 0) && (AttributeArray[0].GetValue == true)) { greetWith = "Hello " + this._firstName + " " + this._lastName; } else { greetWith = "Hello " + this._firstName; } return greetWith; } } }
Note the class that marked with [GreetWithFullName(true)]. Now when the SayHello() will be called, it will first check whether the GreetWithFullName is there and set to true for the calling class. If so, then it returns a string with full name (i.e first name followed by last name). Otherwise it simply returns the first name.
namespace ConsoleApplication1 { class Program { static void Main(string[] args) { MFSEmployee emp = new MFSEmployee("Priyanka", "Dash"); Console.WriteLine(emp.SayHello()); Console.ReadLine(); } } }
Output I [With GreetWithFullName(true)]
Hello Priyanka Dash Output II [With GreetWithFullName(false) or not present at all] Hello Priyanka This is a simple example to understand creating Custom Attribute. You can create and use Custom Attributes in your projects to get excellent run-time behavioral characteristics. |