在C#中,Attribute(特性)是一种用于向程序元素(如类、方法、属性等)添加元数据信息的机制。Attribute以方括号的形式定义在程序元素的上方,如下所示:
[AttributeUsage(AttributeTargets.Class)]
public class CustomAttribute : Attribute
{
// 属性
public string Name { get; set; }
// 构造函数
public CustomAttribute(string name)
{
Name = name;
}
}
// 使用自定义特性
[CustomAttribute("TestClass")]
public class MyClass
{
// 属性
[CustomAttribute("TestProperty")]
public string MyProperty { get; set; }
// 方法
[CustomAttribute("TestMethod")]
public void MyMethod()
{
// 方法体
}
}
在上面的示例中,定义了一个名为CustomAttribute的自定义特性,并将其应用于类MyClass和其中的属性和方法。可以在自定义特性类中定义属性和构造函数,以便在应用特性时传递参数。
要获取程序元素上的特性信息,可以使用反射机制。例如,可以通过以下代码获取MyClass类上的CustomAttribute特性信息:
CustomAttribute attribute = (CustomAttribute)Attribute.GetCustomAttribute(typeof(MyClass), typeof(CustomAttribute));
if (attribute != null)
{
Console.WriteLine(attribute.Name);
}
通过正确使用Attribute,可以为程序元素添加额外的元数据信息,以便在运行时动态地获取和处理这些信息。