了解C#特性类并声明我们自己的特性类【AttributeTest】代码如下
using System;
namespace AttributeTest
{
/* 特性说明
特性本质是一个继承和使用了系统基类的"类",用以将元数据或声明信息与代码(程序集、类型、方法、属性等)相关联。特性与程序实体关联后,
即可在运行时使用名为“反射”的技术查询特性。
官方介绍的很详细,我们就一起来了解一下它的用法。
特性具有以下属性:
1.特性可向程序中添加元数据。元数据是有关在程序中定义的类型的信息。所有的.NET 程序集都包含指定的一组元数据,
这些元数据描述在程序集中定义的类型和类型成员。可以添加自定义特性,以指定所需的任何附加信息。
2.可以将一个或多个特性应用到整个程序集、模块或较小的程序元素(如类和属性)。
3.特性可以与方法和属性相同的方式接受参数。
4.程序可以使用反射检查自己的元数据或其他程序内的元数据。
*/
#region 声明一个 作用于成员方法 的特性
//1.第一步 继承自定义属性的基类 Attribute
//2.第二步 指定 我们自定义特性类 的一些属性,用系系统特性指定
// AttributeTargets:指定为程序中的何种成员设置属性 可写多个 例: AttributeTargets.Class|AttributeTargets.Method
// AllowMultiple:如果允许为一个实例多次指定该特性,则为 true;否则为 false。默认为 false。
// Inherited:如果该属性可由派生类和重写成员继承,则为 true,否则为 false。默认为 true。
[AttributeUsage(AttributeTargets.Method, AllowMultiple = true, Inherited = true)]
public class MethodAttribute : Attribute
{
/// <summary>
/// 方法名称
/// </summary>
public string MethodName { set; get; }
/// <summary>
/// 方法描述
/// </summary>
public string MethodDesc { set; get; }
/// <summary>
/// 方法描述特性
/// </summary>
/// <param name="methodName">方法名称</param>
/// <param name="methodDescription">方法描述</param>
public MethodAttribute(string methodName, string methodDescription)
{
MethodName = methodName;
MethodDesc = methodDescription;
}
}
#endregion
#region 声明一个 作用于类 的特性
[AttributeUsage(AttributeTargets.Class, AllowMultiple = true)]//第一步
public class ClassAttribute : Attribute//第二步
{
string ClassName { set; get; }
string ClassDesc { set; get; }
public ClassAttribute(string clas