前言
C#语言可以指定有关程序中定义的实体的声明性信息。例如,通过访问修饰符来指定类中方法的可访问性。C#中还提供一个Attribute类,它可以将特性附加到各种程序实体,并在运行时环境中检索属性信息。这就是本文将介绍的特性。
一、特性的定义
特性是在运行时描述程序中各种元素(如类、方法、字段和属性等)进行声明性的信息标注,并可在运行时环境中检索声明性的信息。
特性描述是放置在某些程序元素(如类、方法、字段和属性等)上,这些元素前面的方括号[,]来描述。在运行时以反射的方式来获取附件信息。.NET提供了两种类型的特性,分别是预定义特性和自定义特性。
1、标记语法
特性的标注由一对方括号组成,方括号可以包含一个或多个特性以逗号分隔。其中[特性A] [特性B] 和 [特性A, 特性B]是等价的。
[特性名称(位置参数,命名参数列表)]
程序元素
特性名称:是一个特性类。如:SerializableAttribute、FlagsAttribute、ConditionalAttribute,标注是包含或忽略Attribute。
位置参数:是特性类的每个公共实例构造函数。
命名参数:是特性类的每个非静态公共读写字段和属性都为特性定义了一个命名参数。
示例:
[Serializable()]
public class Student
{
///<summary>
///学习
///</summary>
[Obsolete("方法已过时", true)]
public string Study(string subject)
{
return subject;
}
}
2、预定义特性
预定义特性是指编译器识别的特性,它们用于修饰代码,指导编译器的行为。以下是一些常见的预定义特性:
Obsolete:将元素标记为过时的告知用户,该元素在未来版本将被删除。
using System;
namespace Fountain.Net.Library
{
public class Student
{
///<summary>
///姓名
///</summary>
public string Name { get; set; }
///<summary>
///年级
///</summary>
public string Grade { get; set; }
///<su