当前位置:编程学习 > C#/ASP.NET >>

C# 为什么要用反射,什么情况必须使用反射。

DLL内容都了解的话,直接引用DLL不就好了吗,为什么还要反射。
DLL里面的内容什么都不知道的话,就算反射的话,也不知道里面的方法是干什么的啊,和直接引用DLL没区别啊。

有的说工厂模式动态加载DLL时需要用到反射
如果我不用工厂模式,也不动态加载是不是就不需要使用了那。 --------------------编程问答-------------------- 楼主你试试做个支持插件的应用程序 --------------------编程问答-------------------- 动态加载dll调用方法 --------------------编程问答--------------------
引用 楼主 guanzijuan123 的回复:
DLL内容都了解的话,直接引用DLL不就好了吗,为什么还要反射。
DLL里面的内容什么都不知道的话,就算反射的话,也不知道里面的方法是干什么的啊,和直接引用DLL没区别啊。

有的说工厂模式动态加载DLL时需要用到反射
如果我不用工厂模式,也不动态加载是不是就不需要使用了那。


如果你不用编程,连编程语言都不用学了。。 --------------------编程问答-------------------- 反射就是 运行时检查和处理程序元素 的功能
枚举类型的成员;
实例化新对象;
执行对象的成员;
查找类型的信息;
查找程序集的信息;
检查应用于类型的定制特性;
创建和编译新程序集.  --------------------编程问答-------------------- 反射(.NET元数据访问)是一种抽象模式,可以提高开发效率,比如对象序列化。。。 --------------------编程问答-------------------- 需要获取 类成员信息的时候吧 --------------------编程问答-------------------- 楼主会用反射吗,最简单的用法是:可以找出对象所包含成员变量,属性,方法等,然后进行赋值,调用等。
但这些成员变量,属性,方法的名称在编程的时候都是不知道的。 --------------------编程问答--------------------
引用 楼主 guanzijuan123 的回复:
DLL内容都了解的话,直接引用DLL不就好了吗,为什么还要反射。
DLL里面的内容什么都不知道的话,就算反射的话,也不知道里面的方法是干什么的啊,和直接引用DLL没区别啊。

有的说工厂模式动态加载DLL时需要用到反射
如果我不用工厂模式,也不动态加载是不是就不需要使用了那。


你说的很对,直接引用可以办到,就不需要反射。

问题是,Visual Studio的开发环境为了列举你编写的用户控件的成员,能够直接引用你的dll么?IIS为了将发来的http请求转化为对你写的asp.net程序的调用,可以引用你的程序么? --------------------编程问答--------------------
引用 楼主 guanzijuan123 的回复:
DLL内容都了解的话,直接引用DLL不就好了吗,为什么还要反射。
DLL里面的内容什么都不知道的话,就算反射的话,也不知道里面的方法是干什么的啊,和直接引用DLL没区别啊。

有的说工厂模式动态加载DLL时需要用到反射
如果我不用工厂模式,也不动态加载是不是就不需要使用了那。

像你说的,的确是不需要。工厂模式也不一定非得反射。不过反射在某些情况下是很管用的,比如你所说的动态加载,不想写死或不能写死,只好反射。 --------------------编程问答-------------------- 通俗的说,反射可以使用未知的dll。 --------------------编程问答-------------------- dll应该是可以用的 --------------------编程问答-------------------- 需要动态生成一个实例的时候可以考虑使用反射,很多.NET框架中运用了反射,反射有更多的灵活性 --------------------编程问答-------------------- 一个人认为程序开发过程中的“设计”跟自己无关、都是领导的事情,那么他就一辈子没有这方面需求。

反之,如果你把口号付诸于实践,那么你必须在一万行代码中总有那么十几行代码明确地使用到反射的。 --------------------编程问答-------------------- 亲.普通的代码.不是dll也可以用反射的.
就像是静态调用和动态调用的关系.
(类.属性,方法等)名字都可以不是固定的.很方便历遍. --------------------编程问答-------------------- --------------------编程问答--------------------
引用 13 楼 sp1234 的回复:
一个人认为程序开发过程中的“设计”跟自己无关、都是领导的事情,那么他就一辈子没有这方面需求。

反之,如果你把口号付诸于实践,那么你必须在一万行代码中总有那么十几行代码明确地使用到反射的。



我也不懂,求科普啊,大神!为啥要用C#反射? --------------------编程问答-------------------- 动态调用dll,比如这个dll有一个类,我们不知道它里面有什么属性、方法、元素?但通过反射就可以知道它里的属性、方法,就可以实现调用。通过反射获取它的类型是什么? --------------------编程问答-------------------- 反射可以用来开发程序插件一类的,别人开发的插件只要继承某个已知的接口,就可以利用反射动态加载进来,然后实例化接口调用,就可以载入别人的插件了
--------------------编程问答-------------------- 多用用就明白了。 --------------------编程问答-------------------- 这么说吧  平时你写程序的时候 基本上很少用到  或者可能都用不到反射  除非你接触框架这样的东西  
你要编写或者修改  你才会写反射  其他时间  只要别人告诉你怎么用就行  楼上各位大大都说了  反射其实很常用  序列化 或者做可扩展应用程序等等  当然  如果你负责框架部分的开发 会经常遇到反射的   --------------------编程问答-------------------- 我的理解就是一种抽象手段,比如委托(函数指针),如果你调用的时候已经知道函数是什么了,那不是也不需要了么?但是当你需要一个抽象的通用的方法的时候,就需要了。 --------------------编程问答-------------------- 反射就是.net里的内工厂,还有其他很多种用法,通过反射可以把一个textbox里的string编译为一个dll,在动态载入调用执行,可以解决一些特殊的业务需求
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,