.net essential读后感(二)

原题是:总结-对象头、元数据、反射

当然,对于原题,现在我也得去翻书,才知道具体是那些章节的读后感。

a)基本原理

对象是(字段+对象头)
对象头有两部分组成:同步锁、类型句柄(指向一个数据结构的指针)。对object的引用,始终是指向数据结构的指针
被指向的数据结构包含:类型的自描述、指向类型元数据内存表示的指针。
通过类型元数据,可实施对object的操作(即找到方法的IL代码,再利用元数据生成机器代码,返回机器代码内存的指针。),可检查类型的兼容性(类型元数据有指向基类型元数据的指针和接口表的指针)。

b)编程使用

对基于CLR的程序员来说,类型句柄是看不见的。但可以在运行时和开发时通过reflection,由object或者type name,获得类型元数据的引用(那么,类的一切都透明了。因为元数据不存在缺漏——即类的成员在元数据里没有登记。)说到底,反射就是利用元数据获得看不见却存在的成员的引用。
例:
Type t = typeof(类型名); Type t = object.GetType()   MemberInfo[] members = t.GetMembers()
也可以动态反射
 Assembly.LoadFrom("C:\\...").GetModules().GetTypes()
可能会用到的参数,BindingFlags是一个所有反射层次通用的枚举类型,可通过BindingFlags.Static|BindingFlags.NonPublic等来输出指定的member
posted @ 2012-08-31 21:45  zzq417  阅读(157)  评论(0编辑  收藏  举报