Introduction
An attribute is a powerful .Net language feature . Attributes provides a powerful method to adding metadata such as compiler instruction to the program itself. Metadata is the information about the data, information about type , assembly. An attributes is used to represent data in your program. An element is attached to the attributes that is known as Target of the attribute.
I have created a simple attribute as shown below:
Creating a Custom Attribute :
A sample class would look like below:
[AttributeUsage(AttributeTargets.All, AllowMultiple = false)]
public sealed class LooKmeAttribute : System.Attribute
{
public string Value { get; set; }
public LooKmeAttribute()
{
}
public LooKmeAttribute(string value)
{
Value = value;
}
}
Description Of above class
AttributeUsage
Describes how a custom attribute class can be used.
AttributeTargets.All
It means that the attribute we created could be applied to anything or everything. For Example: Assembly, Class, Constructor etc.
AllowMultiple = false
If set to true, multiple instances are allowed; if set to false (the default), only one instance is allowed.
sealed class
This class can not be extensible.
LooKme Attribute
This is a attribute name.
Lets see how can I use this attribute .
[LooKme("Including 4.0 features")]
class MyClass
{
}
Reflection is used to get the Class Name Type.
Example
using System;
using System.Reflection;
using System.Collections;
class CustomAttributeTest
{
public static void Main()
{
Type clazz = typeof(MyClass);
Object[] atts = clazz.GetCustomAttributes(typeof(LooKmeAttribute), false);
foreach (LooKmeAttribute att in atts)
{
System.Console.WriteLine("You should fix '" + clazz.FullName + "' : " + att.Value);
}
Console.ReadKey();
}
}
The output of following program