浅谈vb.net中的反射机制

前端之家收集整理的这篇文章主要介绍了浅谈vb.net中的反射机制前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我们在做机房收费系统用到了反射,但是只是知道这么简单的使用,但没想我们为 什么使用它?

化繁为简,还是那个哲学上经典的提问(你是谁?你从哪里来?你到哪里去?)?

(1)反射是什么东东呢?

想到”反射”这概念,我们日常生活中,印象最深刻的是可能就是:光的反射

而在设计模式中反射的概念:

要指程序可以访问、检测和修改它本身状态或行为的一种能力。


这听起来真晕啊!毕竟是浅谈,我们还是拿例子说事吧。

我们只要在程序的顶端写上using system.Reflection ;这样就可以应用反射了。

反射的格式: Assembly.Load("程序集名称").CreateInstance(“命名空间.类的名称”)

Assembly.Load(“程序集名称”)这个方法:表示动态加载程序集。

CreateInstance(“命名空间.类的名称”)这个方法:表示创建类的实例。

谈到这儿,那就不得不说明什么是“程序集”和“命名空间”了。


程序集(Assembly):通常来说一个项目就是一个程序集。例如我们做的7层架构

的机房收费系统,就表示有7个程序集(至于这么划分程序集,对于初学者挺难)



命名空间(namespace):引入它的目的,主要避免一个项目中,存在相同的对象名的冲突。查阅了一些高 手的博客:他们是这样比喻的:命名空间就像我们中国姓氏中的“姓”,每个对象的名字就像姓名中的“名”。


而程序集和命名空间的关系不一定是一一对应的,也不互补包含。

这里默认程序集名称和命名空间是一致的,这里修改的,如果不一致,会出现动态 生成时找不到类,这样的错误。因此这里最好把他们设置一致。

程序集包含模块,而模块包含类型,类型又包含成员。反射则提供了封装、 模块和类型的对象

(2)为什么要使用反射?

大家都懂的:如果我们不使用反射:就把实例化写死在程序里了。

而反射是利用字符串来实例化对象,而字符串是可以写成变量的 而变量是可以更换的。这也是反射的核心所在!

猜你在找的VB相关文章