有人说是用于这样的场景:“给你一个Dll,但你不知道Dll里有哪些方法,属性之类的,通过反射可以知道Dll文件里的内容”。。我自己尝试了一下,写了一个类编译成DLL后,新建立一个项目,然后把这个DLL引用进来,然后直接左右它,点“在对象浏览器中查看”就能知道它的命名空间和类,然后引用命名空间之后,直接写上类名 x=new 类名()的方式就得到了它的对象,再用x.*就知道它有哪些方法了。。根本用不着什么反射啊。。。。那么请问高手们,反射主要用于什么地方呢?谢谢!
你用X。属性就出来了,那是因为VS做的好,本身就用了反射~~
你好,
你这个是写死的做法.
假如我要让你用一个TextBox由用户去输入一个值你在去根据这个用户输入的值去访问那个Dll里面的类的属性时,你不反射.怎么搞?
我擦~~~8个月后结的帖
我给你举例子吧,比如你有一个ASP.NET的页面,是用来进行用户注册的。当用户提交的时候,你要抓取页面中每个控件的值,比如name写在TextBox中,而性别又是一个DropDownList,等等我就不列举了。如果不用反射的话,对于页面中每一个输入控件,你都要写一个赋值的语句,赋值给接收的对象的相应字段,然后存入数据库中。但是如果用反射的话,应用反射写一个抓取控件值并赋值给某对象的方法,就可以自动完成这个功能(当然是有一些限制的,不过大部分工作这个类是可以完成的)。同样,你想把一个对象的一些字段绑定到页面的控件上,而字段的类型有好多种,对应控件绑定时的语句也不一样,比如,TextBox.Text=**,Dropdownlist.item=*;等等之类的,不用反射的话你要一条一条写出来,如果用反射写一个工具类,这些工作工具类自己能够完成,省的你去一句一句的写那些赋值语句。 不过使用反射会产生大量的boxing操作的开销,所以用不用还要全面考虑。当然,这仅仅是反射用途的一个方面,希望能够对你有所帮助。
非常感謝!
举一个例子吧!
比如:
你原来的软件具有的功能是添加用户,和显示用户数据(这2个功能共同属于一个DLL)//此版本已经发布...
后来,版本拓展,为原来的软件添加 修改和删除功能,不能修改源程序,又要为软件添加新功能,此时就需要到反射,动态加载程序集了.
当然这里需要用到接口的使用...
啥意思??
简单的说反射是为了动态地运行时加载,而静态代码是在编译时就确定好了。也就是说当你的程序需要在运行时再做一些晚绑定,动态加载或检查对象等操作时,你就需要用到反射啦
誰能貼點代碼看看就好了……
是时候学点系统设计方面的知识了,比如对于“多态”的理解应该再加深一步。当语言学习到一定程度的时候,如果设计方面的知识跟不上,就必然会阻碍后续知识的学习。语言是骨架,设计是灵魂。
直接引用效率高,便于调试 优点是十分明显的
用反射的场景其实很少,动态加载dll,如果你引用的话是要提前加载的。如果N个dll 你可能都会用到,不过几率却很低,为了这很低的几率,你还是得把这N个dll全部引入。 当N这个数足够大的时候,可以考虑反射动态加载,就会合算很多
我理解的反射就是利用数据的数据来推导数据,就如sqlserver 数据库一样,一个数据库的每个表格和字段,在master这个数据库都有对应的元数据信息!