C# 特性(Attribute)
文章目录
- C# 特性(Attribute)
- Obsolete
- 语法
- 示例代码
- 创建自定义特性(Attribute)
Obsolete
这个预定义特性标记了不应被使用的程序实体。它可以让您通知编译器丢弃某个特定的目标元素。例如,当一个新方法被用在一个类中,但是您仍然想要保持类中的旧方法,您可以通过显示一个应该使用新方法,而不是旧方法的消息,来把它标记为 obsolete(过时的)。
语法
[Obsolete(message
)]
或者:
[Obsolete(message,iserror
)]
示例代码
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;namespace ConsoleApp2
{public class Myclass{[Conditional("DEBUG")]public static void Message(string msg){Console.WriteLine(msg);}}[AttributeUsage(AttributeTargets.All)]public class HelpAttribute : System.Attribute{private string topic;public readonly string Url;public string Topic{get{return topic;}set{topic = value;}}// url 是一个定位(positional)参数public HelpAttribute(string url){this.Url = url;}}[HelpAttribute("Information on the class MyClass")]class MyClass { }class Test{[Obsolete("Don't use OldMethod, use NewMethod instead", true)]static void OldMethod(){Console.WriteLine("It is the old method");}static void NewMethod(){Console.WriteLine("It is the new method");}public static void Main(){OldMethod();}}
}
如果是false,那么显示一个警告:
如果是true,那么就报错误:
- 参数 message,是一个字符串,描述项目为什么过时以及该替代使用什么。
- 参数 iserror,是一个布尔值。如果该值为 true,编译器应把该项目的使用当作一个错误。默认值是 false(编译器生成一个警告)。
创建自定义特性(Attribute)
创建并使用自定义特性包含四个步骤:
声明自定义特性
构建自定义特性
在目标程序元素上应用自定义特性
通过反射访问特性