以下是一些关于 C# 特性的基本知识:
1. 定义特性:
[AttributeUsage(AttributeTargets.Class | AttributeTargets.Method)]
public class MyCustomAttribute : Attribute
{
public string Description { get; set; }
public MyCustomAttribute(string description)
{
Description = description;
}
}
在上述例子中,MyCustomAttribute 是一个自定义特性类,它继承自 Attribute 类。
2. 应用特性:
[MyCustom("This is a sample class")]
class MyClass
{
[MyCustom("This is a sample method")]
public void MyMethod()
{
// Method implementation
}
}
在上述例子中,MyClass 类和 MyMethod 方法都应用了自定义特性 MyCustomAttribute。
3. 检索特性信息:
Type type = typeof(MyClass);
MyCustomAttribute classAttribute = (MyCustomAttribute)Attribute.GetCustomAttribute(type, typeof(MyCustomAttribute));
MethodInfo method = type.GetMethod("MyMethod");
MyCustomAttribute methodAttribute = (MyCustomAttribute)Attribute.GetCustomAttribute(method, typeof(MyCustomAttribute));
使用反射,你可以在运行时获取应用于类型和成员的特性信息。
4. 内置特性:
C# 中有一些内置的特性,例如:
- [Obsolete]: 标记一个成员已过时。
- [Serializable]: 标记一个类可以被序列化。
- [Conditional]: 指定在调用方法时是否执行条件方法调用。
[Obsolete("This method is deprecated. Use NewMethod instead.")]
void OldMethod()
{
// Method implementation
}
5. 多重特性:
你可以为一个元素应用多个特性:
[MyFirstAttribute]
[MySecondAttribute]
class MyClass
{
// Class implementation
}
在这个例子中,MyClass 类同时应用了 MyFirstAttribute 和 MySecondAttribute 特性。
特性为C#代码添加了元数据信息,使得在编译时和运行时可以进行更多的自定义处理。在实际应用中,特性经常用于实现代码分析、代码生成、依赖注入等场景。
转载请注明出处:http://www.zyzy.cn/article/detail/6361/C#