您的位置:首页 > 编程语言 > C#

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

2013-05-08 10:54 483 查看
来自: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";

}

}

}

输出两个17. 两种方法都可以获取返回值的自定义特性。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐