反射和添加引用的区别

wang123haiquan 2010-09-15 04:32:10
反射和右键添加引用都可以实现对程序集里的方法的调用,那有什么区别吗?
...全文
649 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
哒哒 2010-09-15
  • 打赏
  • 举报
回复
学习,不错!
卧_槽 2010-09-15
  • 打赏
  • 举报
回复
等你写了很多很多代码,做了一些比较复杂的项目之后,就会觉得反射还是有点用处的。
garfieldzf 2010-09-15
  • 打赏
  • 举报
回复
[Quote=引用 6 楼 lostuser 的回复:]
看看设计模式,比如工厂模式,
研究研究开元框架慢慢就明白了!
[/Quote]

可以推荐几个开源框架
鱼C缸 2010-09-15
  • 打赏
  • 举报
回复
前期与后期
设计时与运行时
SuperGM 2010-09-15
  • 打赏
  • 举报
回复
反射是一个运行库类型发现的过程。通过反射可以得到一个给定程序集所包含的所有类型的列表,
这个列表包括给定类型中定义的方法、字段、属性和事件。也可以动态的发现一组给定类支持的借口、方法的参数和其他相关信息如基类、命名空间、数据清单等。
右键引用DLL是在程序运行前已经指定了
SuperGM 2010-09-15
  • 打赏
  • 举报
回复
viena 2010-09-15
  • 打赏
  • 举报
回复
一个是未知的,一个是已知的
养猪的程序员 2010-09-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wang123haiquan 的回复:]
代码里调用哪个方法,应该是已经知道了吧,为什么要运行时调用DLL?请高手解释
[/Quote]
想想開閉原則,有些情況用那一個DLL是要在運行時才知道的.
例如:你開發了一個系統,是支持SQL與mySQL的,而連接這兩個不同數據庫是用不同的DLL的,你可以通過配置來改變他的連接.
ZengHD 2010-09-15
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 wang123haiquan 的回复:]

代码里调用哪个方法,应该是已经知道了吧,为什么要运行时调用DLL?请高手解释
[/Quote]
如果要把程序做成插件式、插拔式,就可以使用反射实现
例如说,现在你的程序通过反射调用一个DLL的函数,那天这个DLL不用了,或者来了一个新的DLL,只要接口不变(就算接口变了,也可以通过配置文件获得),都可以直接使用新的DLL,那不需要修改你原来的程序

PSSonyXbox 2010-09-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zenghd 的回复:]
前期与后期
设计时与运行时
[/Quote]

InvokerKar 2010-09-15
  • 打赏
  • 举报
回复
我曾经做过一个项目,在项目开发完毕以后,客户要求添加一个天气预报的功能,因为采用的是反射的方式,我把天气预报的调用重新写了一个项目,生成的dll添加进原来的运行目录中,再在配置文件中把新添加的dll信息填进去。新添加的功能就可以使用了,不必更改原来的代码。这是一个好处吧。

[Quote=引用 3 楼 wang123haiquan 的回复:]

代码里调用哪个方法,应该是已经知道了吧,为什么要运行时调用DLL?请高手解释
[/Quote]
lostuser 2010-09-15
  • 打赏
  • 举报
回复
看看设计模式,比如工厂模式,
研究研究开元框架慢慢就明白了!
鸭梨山大帝 2010-09-15
  • 打赏
  • 举报
回复
如果是引用的方式,前期就知道.
如果是反射的方式,后期才知道.

为什么运行是要调用DLL? 别人开发的第三方的程式,你没有源代码,而别人也是在DLL中提供了接口供你调用,你当然只能调用DLL,这样别人可以将内部代码隐藏,保护,将内部实现隐藏(代码).
你自己写的DLL也一样,即使有源代码,你也不可能把所有的功能都弄到一个项目下,既不利于扩展,也不利于维护.

[Quote=引用 3 楼 wang123haiquan 的回复:]
代码里调用哪个方法,应该是已经知道了吧,为什么要运行时调用DLL?请高手解释
[/Quote]
porschev 2010-09-15
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 zenghd 的回复:]
前期与后期
设计时与运行时
[/Quote]

wang123haiquan 2010-09-15
  • 打赏
  • 举报
回复
代码里调用哪个方法,应该是已经知道了吧,为什么要运行时调用DLL?请高手解释
lostuser 2010-09-15
  • 打赏
  • 举报
回复
反射是后期绑定。
ZengHD 2010-09-15
  • 打赏
  • 举报
回复
前期与后期
设计时与运行时

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧