为什么MemberInfo只有GetCustomAttributes()没有GetAttributes()

问题描述

System.Reflection.MemberInfo只有函数叫做GetCustomAttributes,这个Custom单词的含义是自定义吧。难道就没有"非自定义"的Attribute吗,系统自带的就有很多类型啊,为什么没有一个叫做GetAttributes()的函数呢?

解决方案

解决方案二:
个人猜测是从il(CommonIntermediateLanguage)中来的。根据ECMAII.21,"Customattributesallowaninstanceofatypetobestoredwithanyelementofthemetadata".这里的custom的修饰的对象是metadata,是'自定义'的元数据(其他元数据包括类的定义,方法的定义等等等等)。中间语言中特性的写为:.custominstancevoidmyAttribute因此CustomAttribute可能不是指'自定义'的Attribute。
解决方案三:
系统自带的自定义属性和我们写的自定义属性都是同样性质的东西,是没必要分区对待的。而非自定义属性当然是有的,那是用GetProperties来获取的。

时间: 2024-11-18 09:27:51

为什么MemberInfo只有GetCustomAttributes()没有GetAttributes()的相关文章

MemberInfo.GetCustomAttributes 方法 (Boolean)

问题描述 usingSystem;usingSystem.Reflection;//Defineacustomattributewithonenamedparameter.[AttributeUsage(AttributeTargets.All)]publicclassMyAttribute:Attribute{privatestringmyName;publicMyAttribute(stringname){myName=name;}publicstringName{get{returnmyN

映射 -- zt 统一教学网

映射   在许多情况下,我们需要一种方法,能够从元数据中访问属性,C#提供了对映射的支持以访问元数据.通过初始化MemberInfo类型对象,System.Reflection名字空间中的这个对象可以用来发现成员的属性,对元数据进行访问.   System.Reflection.MemberInfoinf=typeof(MyMath);   对MyMath类型调用typeof操作符,它返回一个由继承MemberInfo而生成的Type类型的变量.   下一步是对MemberInfo对象调用Get

C#学习笔记之四(Attribute, Reflection, Thread, Thread Syn

Atributes: //can add metadata in program, It store with the program //using ILDasm to check atributes //usage [CodeReviewAttribute("08/08/2005", "Allan Zhang", Comment = "That is a Attribute test")] class Employee {} //define

由C++转向C#:我们需要注意哪些方面的变化?

c++ 每隔10年左右,编程人员就需要花费大量的时间和精力去学习新的编程技术.在80年代是Unix和C,90年代是Windows和C++,现在又轮到了微软的.NETFramework和C#.尽管需要学习新的技术,但由此带来的好处却远高于付出的劳动.幸运的是,使用C#和.NET进行的大多数工程的分析和设计与在C++和Windows中没有本质的变化.在本篇文章中,我将介绍如何实现由C++到C#的飞跃. 已经有许多文章介绍过C#对C++的改进,在这里我就不再重复这些问题了.在这里,我将重点讨论由C++

.net中 关于反射的详细介绍_实用技巧

概述反射• 通过反射可以提供类型信息,从而使得我们开发人员在运行时能够利用这些信息构造和使用对象. • 反射机制允许程序在执行过程中动态地添加各种功能.   运行时类型标识 •运行时类型标识(RTTI),可以在程序执行期间判定对象类型.例如使用它能够确切地知道基类引用指向了什么类型对象.•运行时类型标识,能预先测试某个强制类型转换操作,能否成功,从而避免无效的强制类型转换异常. •在c#中有三个支持RTTI的关键字:is . as  .typeof. 下面依次介绍他们   is运算符: 通过is

[CLR via C#]18. Attribute

原文:[CLR via C#]18. Attribute attribute可以说是Microsoft .NET Framework提出的最具创意的技术之一了.利用attribute,可以声明性的为自己的代码构造添加注解,从而实现一些特殊的功能.attribute允许将定义的信息应用于几乎每一个元数据表的记录项.这种可扩展的元数据信息能在运行时查询,从而动态改变代码的执行方式.   一.使用attribute attribute可运用于类型和成员.Microsoft采取了一种机制提供对用户自定义

C# IsDefined的问题_C#教程

在.NET 4.0(当然也包括4.0以前的版本)下,用反射判断某个方法是否运用了自定义Attribute时,可以通过调用MethodInfo的IsDefined()方法进行确认.当然,IsDefined()方法事实上定义在MethodInfo的父类MemberInfo中,但它仅仅被定义为抽象方法,真正的实现是在MethodInfo的子类DynamicMethod中.调用方式如下所示: 复制代码 代码如下: methodInfo.IsDefined(typeof(MyAttribute), fal

在.NET运行时了解类型信息(3) Paul_Ni(原作)-Windows开发-.NET教程-

访问自定义属性当属性与程序元素相关联后,可以使用反射来查询它们是否存在以及它们的值.用于查询属性的主要反射方法包含在 System.Reflection.MemberInfo.GetCustomAttributes 和 System.Reflection.Assembly.GetCustomAttributes 中.自定义属性的可访问性根据附加该属性的程序集来进行检查.这相当于检查附加自定义属性的程序集中的类型上的方法是否可以调用自定义属性的构造函数.诸如 System.Reflection.A

厚积薄发,丰富的公用类库积累,助你高效进行系统开发(13)--- 各种常用的辅助类2

俗话说,一个好汉十个帮,众人拾柴火焰高等都说明一个道理,有更多的资源,更丰富的积累,都是助你走向成功,走向顶峰的推动力. 本篇的公用类库的介绍主题是程序开发中常用到的一些辅助类,在帮助文档中归类到其他目录下面,本篇主要介绍有注册表的操作.反射操作.正则表达式操作.Zip压缩操作.AD操作.字符串Unicode转换操作等常见但有些凌乱的类库. 本篇继续继续整理优化已有的共用类库,并继续发表随笔介绍公用类库的接口方法以及详细使用操作,力求给自己继续优化,积攒更丰富的公用类库资源,加深了解的同时,也给