求助:请问反射的概念该怎么理解呢?
在面试的时候总是遇到这个问题,但我没用过反射所以不理解,有谁能通俗的说明一下吗?
反射这个词经常看到,但一直不明白怎么一回事,怎么用,哪里会用到。。。
好像跟序列化会结合用吧?有次面试遇到的问题就是:反射和序列化的概念?
PS:如果是你们自己遇到了会怎样解答呢?
------解决方案--------------------反射就是,一个给你一个类型,你可以不按照传统的方式 new something(),进行实例一个对象,也可以进行属性赋值,调用方法什么的,你可以通过反射,实现绝大部分相关的功能,重点在于,不用编译的时候关注具体的类型,后期给个合适的dll进去,也可以进行相关的操作
序列化,我理解的是,一个对象或者类型用于传输的“方式”或者说是“编码”,保存读取,都需要用到它
------解决方案--------------------反射就像一个偷窥镜:可以把类内部的元素一个一个透视处理,从而了解类或对象内部的结构,从而利用其元素;
序列化就想一个万能包装和解包器:能把一个复杂的结构拆解,然后进行包装,方便存储和传输,之后也可以方便的把内容进行解包从而还原其原来的样子。
------解决方案--------------------增加了灵活性,一般情况下 我们实例化一个类,反射提供了另外一个方法。
当然 会消耗性能,
------解决方案--------------------放射就是照镜子,让代码自己能认识自己。
------解决方案--------------------.net中生成的exe或dll称为程序集,通过反射可以获取其中的元数据,当然最主要的是类型信息,可以通过反射获取所有的程序集中的元素信息,动态创建类实例,调用方法等等都可以。
序列化就是将一个对象的内存表现形式保存下来,之后可以通过反序列化还原出这个对象。