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";

            }

        }

    }

  • 相关阅读:
    Python 面向对象编程
    snmp获取交换机端口和对应ip
    python IPy
    Django F()与Q()函数
    装饰器使用
    log日志信息查看
    shell简单入门
    gunicorn开启、关闭和重启
    CF1453B
    ACWing845 八数码(BFS,全排列hash)
  • 原文地址:https://www.cnblogs.com/w-wfy/p/7670969.html
Copyright © 2011-2022 走看看