反射是指在运行时获取程序集、类、函数的信息,目前我只知道JAVA和.Net支持这样的功能,这就解释了为什么.Net组件不用注册的疑问,因为它能在运行时获取程序集、类、函数的信息,比如给你一个.Net写的DLL,你就能用反射机制知道它里面有些什么类,该类有什么成员方法(包括参数)、属性,甚至私有函数。
这比COM先进的是不用读注册表,且COM的方法和属性难以分清楚,都是公有函数的形式,私有函数更不用提了。
在实际使用中用处太大了,可以说带来一种新式的编程方式,比如说:有一张表有三个字段,A,B,C,写一个类(CTable)访问此表,该类有三个属性对应于三个字段(CTable.A, CTable.B, CTable.C),此类作为中间层,客户端使用此中间层时可以这样,运用反射机制一次循环读出这三个属性,客户端可以知道属性名(A,B,C)属性个数及类型,据此构造一个DBGrid,表头就用属性名ABC,一切都是自动的,你无须事先知道数据库的表中有多少字段,字段名是什么,也不必知道那个类的属性有多少。
更妙的是,当你的表需要增加一个字段时,你只要在类中添加一个属性即可,客户端程序不必作任何修改,DBGrid会自动把新字段显示出来,多么精妙!