首页 新闻 会员 周边

C# 请问反射的主要作用是什么?

0
悬赏园豆:5 [已解决问题] 解决于 2012-08-21 14:27

有人说是用于这样的场景:“给你一个Dll,但你不知道Dll里有哪些方法,属性之类的,通过反射可以知道Dll文件里的内容”。。我自己尝试了一下,写了一个类编译成DLL后,新建立一个项目,然后把这个DLL引用进来,然后直接左右它,点“在对象浏览器中查看”就能知道它的命名空间和类,然后引用命名空间之后,直接写上类名 x=new 类名()的方式就得到了它的对象,再用x.*就知道它有哪些方法了。。根本用不着什么反射啊。。。。那么请问高手们,反射主要用于什么地方呢?谢谢!

hexllo的主页 hexllo | 菜鸟二级 | 园豆:318
提问于:2011-12-30 15:33
< >
分享
最佳答案
0

你用X。属性就出来了,那是因为VS做的好,本身就用了反射~~

收获园豆:1
happydaily | 菜鸟二级 |园豆:301 | 2011-12-31 10:18
其他回答(8)
1

你好,

你这个是写死的做法.

 

假如我要让你用一个TextBox由用户去输入一个值你在去根据这个用户输入的值去访问那个Dll里面的类的属性时,你不反射.怎么搞?

收获园豆:1
dotNetDR_ | 园豆:2078 (老鸟四级) | 2011-12-30 16:18

我擦~~~8个月后结的帖

支持(5) 反对(0) dotNetDR_ | 园豆:2078 (老鸟四级) | 2012-08-21 14:29
1

我给你举例子吧,比如你有一个ASP.NET的页面,是用来进行用户注册的。当用户提交的时候,你要抓取页面中每个控件的值,比如name写在TextBox中,而性别又是一个DropDownList,等等我就不列举了。如果不用反射的话,对于页面中每一个输入控件,你都要写一个赋值的语句,赋值给接收的对象的相应字段,然后存入数据库中。但是如果用反射的话,应用反射写一个抓取控件值并赋值给某对象的方法,就可以自动完成这个功能(当然是有一些限制的,不过大部分工作这个类是可以完成的)。同样,你想把一个对象的一些字段绑定到页面的控件上,而字段的类型有好多种,对应控件绑定时的语句也不一样,比如,TextBox.Text=**,Dropdownlist.item=*;等等之类的,不用反射的话你要一条一条写出来,如果用反射写一个工具类,这些工作工具类自己能够完成,省的你去一句一句的写那些赋值语句。 不过使用反射会产生大量的boxing操作的开销,所以用不用还要全面考虑。当然,这仅仅是反射用途的一个方面,希望能够对你有所帮助。

收获园豆:2
喝不了酒 | 园豆:222 (菜鸟二级) | 2011-12-30 17:27

非常感謝!

支持(1) 反对(0) 追夢 | 园豆:146 (初学一级) | 2012-01-13 17:30
0

举一个例子吧!
 比如:
  你原来的软件具有的功能是添加用户,和显示用户数据(这2个功能共同属于一个DLL)//此版本已经发布...
 后来,版本拓展,为原来的软件添加 修改和删除功能,不能修改源程序,又要为软件添加新功能,此时就需要到反射,动态加载程序集了.
  当然这里需要用到接口的使用...

收获园豆:1
小明冥 | 园豆:222 (菜鸟二级) | 2011-12-31 18:04

啥意思??

支持(0) 反对(0) 彬彬@科比 | 园豆:43 (初学一级) | 2012-12-14 16:58
0

简单的说反射是为了动态地运行时加载,而静态代码是在编译时就确定好了。也就是说当你的程序需要在运行时再做一些晚绑定,动态加载或检查对象等操作时,你就需要用到反射啦

Jason Go | 园豆:298 (菜鸟二级) | 2012-01-09 11:16
0

誰能貼點代碼看看就好了……

追夢 | 园豆:146 (初学一级) | 2012-01-13 17:32
0

是时候学点系统设计方面的知识了,比如对于“多态”的理解应该再加深一步。当语言学习到一定程度的时候,如果设计方面的知识跟不上,就必然会阻碍后续知识的学习。语言是骨架,设计是灵魂。

致远书生 | 园豆:409 (菜鸟二级) | 2012-01-14 16:55
0

直接引用效率高,便于调试   优点是十分明显的

用反射的场景其实很少,动态加载dll,如果你引用的话是要提前加载的。如果N个dll   你可能都会用到,不过几率却很低,为了这很低的几率,你还是得把这N个dll全部引入。  当N这个数足够大的时候,可以考虑反射动态加载,就会合算很多

lulianqi15 | 园豆:204 (菜鸟二级) | 2015-07-25 14:46
0

我理解的反射就是利用数据的数据来推导数据,就如sqlserver 数据库一样,一个数据库的每个表格和字段,在master这个数据库都有对应的元数据信息!

海阔天空XM | 园豆:201 (菜鸟二级) | 2015-12-02 11:23
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册