反射 元数据

C#里的智能感知分成两种,对于当前工程内容的智能提示,这个和C++一样,是通过代码分析出来的,比较复杂。因为这个时候程序还没有编译,没有assembly可以获得。对于引用dll里内容的智能提示,是通过反射实现的,相对简单一点,C++因为没有反射是做不到的。

metadata(元数据):是一系列的特殊数据表,描述了模块中定义的内容,有部分还用来指出托管模块引用的内容。元数据描述表包括定义表,引用表,清单表。

定义表又包括:模块表,类型表,方法表,属性表,字段表,参数表,事件表。

引用表包括:Assembly程序集引用表,模块引用表,类型引用表,成员引用表。

清单表:引用的外部模块描述信息,资源模块。

 

元数据的用途:

1. 在编译时,元数据消除了对头和库文件的需求,因为与引用的类型/成员相关的所有信息都包括在用IL(Intermediate language “中间语言”)来实现类型/成员的文件中。编译器可以直接从托管模块读取元数据。

2. 微软VS 使用元数据来帮助我们写代码。它的“智能感知(IntelliSense)”特性能解释元数据,指出一个类型提供了什么方法,属性,事件和字段。如果是一个方法,还能指出方法需要什么参数。

3. CLR的代码验证过程使用元数据来确保代码只执行“安全”的操作

4. 元数据允许将一个对象的字段序列化到一个内存块中,将其发送给另外一台机器,然后反序列化,在远程机器上重建对象状态。 

5. 元数据允许垃圾收集器跟踪对象的生存期。垃圾收集器能判断任何对象的类型,病根据元数据知道那个对象中的哪些字段引用了其他对象。

 

 

转载于:https://www.cnblogs.com/dirichlet/p/3227275.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值