begincsdn .NET 趴趴窝
[天行健,君子以自强不息]
[天道酬勤思]

动态运行时对象根据类名称(字符串形式)的创建,关于其他方面的技术暂时不想讨论;我也使用过VCL和BCB,但已经是完全的过去式。当MFC仍在继续生存,并且有其一定的生存空间。当然空间相对比较狭小,因为,但其庞大的身躯足以让人们放弃它,而使用底层API或使用如.NET FRAMEWORK。
一、做WEB和业务应用它不如.NET FRAMEWORK和J2EE等;
二、做系统软件如驱动不如API来的直接和有效;

当然其生存空间是在于如做空享软件或软件产品上;

我们现在讨论的是MFC和.NET FRAMEWORK的RTTI,那么就直接入主题吧:

在MFC中有个类叫CRuntimeClass和CObject,在.NET FRAMEWORK中,我们为了讨论简便,以C#为例,有System.Type和Object类型。

这两组类是这两个框架的核心,CRuntimeClass负责构造CObject及其家族的族谱;而System.Type的作用也是雷同的;

CRuntimeClass记录相关Class的缺省构造函数地址和类名字符串,如果需要通过动态(通过字符串)创建类型对象时,是通过搜索相应的类名称,然后通过函数指针调用构造函数创建对象的;

而且C#中Activator.CreateInstance(type),也可以帮我们实现该功能;

事实上Type是CRuntimeClass的威力加强版,要知道Type中记录了所有构造函数的地址,同时还记录了所有方法名和方法的函数地址,也正是这些构成了.NET 的元数据类型,所谓的反射机制依靠的就是这种方法。我们有理由相信,C#为什么在什么都不干的情况下,能占用如何大的内存的原因了。或者说,内存的自动释放并不是.NET的唯一强项;

posted on 2008-03-26 13:26  begincsdn  阅读(792)  评论(0编辑  收藏  举报