zoukankan      html  css  js  c++  java
  • C#提高--------------获取方法返回值的自定义特性(Attribute)

    .NET(C#):获取方法返回值的自定义特性(Attribute)

    转载 2013年05月08日 10:54:42

    来自:http://www.cnblogs.com/mgen/archive/2011/11/02/2233374.html

    .NET中特性的索取就是围绕着ICustomAttributeProvider接口(System.Reflection命名空间内),而MethodInfo类的ReturnTypeCustomAttributes属性直接返回方法返回值的ICustomAttributeProvider接口对象。同时MethodBase的ReturnParameter属性返回方法返回值信息(ParameterInfo),而ParameterInfo也是继承ICustomAttributeProvider的,所以这两个属性都可以得到方法返回值的特性。注意基类MethodBase没有相应属性,由于ConstructorInfo(代表构造函数信息)没有返回值。

    代码:

    using System;

    using System.Reflection;

    namespace Mgen

    {

        [AttributeUsage(AttributeTargets.ReturnValue)]

        class MyAttr : Attribute

        {

            public int Data { get; set; }

        }

        class Program

        {

            static void Main(string[] args)

            {

                var method = typeof(Program).GetMethod("doo");

                test(method.ReturnTypeCustomAttributes);

                test(method.ReturnParameter);

            }

            static void test(ICustomAttributeProvider customAttrProvider)

            {

                if (customAttrProvider.IsDefined(typeof(MyAttr), false))

                {

                    var att = (MyAttr)customAttrProvider.GetCustomAttributes(typeof(MyAttr), false)[0];

                    Console.WriteLine(att.Data);

                }

            }

            [return: MyAttr(Data = 17)]

            public static string doo()

            {

                return "hehe";

            }

        }

    }

  • 相关阅读:
    linux下yum无法使用
    判断某个网卡是否是dhcp获取的ip
    个人作业---词频统计
    第四周读书笔记
    设计关键词
    好文收藏
    Apritag角点代码检测
    处理txt文件,保存为yml和cal文件
    欧拉角欧拉矩阵
    Mysql笔记01-安装和SQL基础
  • 原文地址:https://www.cnblogs.com/w-wfy/p/7670969.html
Copyright © 2011-2022 走看看