.NET C#利用反射获取类文件以及其中的方法&属性 并获取类及方法上的特性

本文介绍了如何在.NET C#中利用反射技术获取类文件以及类中的方法和属性,并详细展示了如何获取类及方法上的自定义特性(AttributeTest)。通过示例代码,演示了从类及成员中检索特性信息的过程。
摘要由CSDN通过智能技术生成

了解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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值