asp.net的反射的作用

mengjun5200 2010-01-25 01:06:37
我觉得做网站好像只是写点类,类里有方法,属性等等,通过类来操作前台页面,现在看了下高级编程,有个反射的概念,可是看概念觉得写的很死,根本不明白什么意思,反射在net中具体有什么用啊?可以形象点给我讲下不?
...全文
402 18 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
18 条回复
切换为时间正序
请发表友善的回复…
发表回复
mickgs 2010-12-12
  • 打赏
  • 举报
回复
sdn.net/PointForum/ui/scripts/csdn//monkey/31.gif][/img]
随风落梦 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 16 楼 sportboy03 的回复:]
跟你举个生活中的例子,就相当于,你请客吃饭,在没有使用反射前,是你预先把酒菜点好之后,等客人来。而用反射是等客人来之后根据客人的口味来点菜。这你应该能明白了吧。。。
[/Quote]
学习了!
sportboy03 2010-01-25
  • 打赏
  • 举报
回复
跟你举个生活中的例子,就相当于,你请客吃饭,在没有使用反射前,是你预先把酒菜点好之后,等客人来。而用反射是等客人来之后根据客人的口味来点菜。这你应该能明白了吧。。。
l13873666736 2010-01-25
  • 打赏
  • 举报
回复

DataRow dr = DAL.GetDataRow(); //从数据库取得一条记录
Employee e = new Employee();//实例化一个对象
System.Reflection.PropertyInfo[] ps = e.GetType().GetProperties();//取得对象的所有属性
foreach(System.Reflection.PropertyInfo p in ps)
{
p.SetValue(e, Convert.ChangeType(dr[p.Name], p.PropertyType), null);//循环附值

}



这样写代码简洁,但数据库结构变化只要改实体类代码就好,

类似这种,还可以动态执行方法

也可以动态取得实例(上面已经有人给了代码)
l13873666736 2010-01-25
  • 打赏
  • 举报
回复
我的理解:
你可以在程序运行的过程中得到 对象 的 属性和方法,在运行的过程中动态的调用属性或方法
kmanzhj 2010-01-25
  • 打赏
  • 举报
回复
1、生产一个DLL文件
using System;
using System.Collections.Generic;
using System.Text;

namespace text
{
public class zhj
{
public void Fun()
{
Console.WriteLine("sdsf");
}
}
}

2、利用反射技术访问上面生产的DLL文件
using System;
using System.Collections.Generic;
using System.Text;
using System.Reflection;

namespace ConsoleApplication1
{
class Program
{
static void Main(string[] args)
{
Assembly ass = Assembly.LoadFrom("E:\\text.dll");//获取程序集
object obj = ass.CreateInstance("text.zhj"); //获取实例
Type mytype = ass.GetType("text.zhj"); //获取类型
MethodInfo meth = mytype.GetMethod("Fun"); //获取方法
meth.Invoke(obj, null);
}
}
}
l13873666736 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 10 楼 meng_master 的回复:]
这么形容不知道形象否
假设你有银行卡,一张建行,以前不能跨行操作
现在通过联网可以在建行的取款机取出工行卡的钱。
而这个取款机就是反射机制。不管换张三来或李四的卡来都可以取
[/Quote]

有点勉强
这个应该是通过银行卡卡号的前几码得到的
sunshine_anycall 2010-01-25
  • 打赏
  • 举报
回复
方便解耦
方便部署
大宇_ 2010-01-25
  • 打赏
  • 举报
回复
这么形容不知道形象否
假设你有银行卡,一张建行,以前不能跨行操作
现在通过联网可以在建行的取款机取出工行卡的钱。
而这个取款机就是反射机制。不管换张三来或李四的卡来都可以取
qiuqingpo 2010-01-25
  • 打赏
  • 举报
回复
学习
  • 打赏
  • 举报
回复
云里雾里 还是学习下
junloveyan 2010-01-25
  • 打赏
  • 举报
回复
如果没有反射,一般实例化一个程序集中的对象需要这样 命名空间.类 对象名=new 构造函数
如果有了反射可以直接根据System.Reflection.Assembly o = System.Reflection.Assembly.Load("程序集");

也就是说,可以知道程序集的名字就可以获取相关类型,模块,成员等信息,具体应用需要自己理解
fangyuantdy 2010-01-25
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 mengjun5200 的回复:]
还是不明白,网站的模块?
[/Quote]比如说数据库访问层,程序中写了两个,一个是微软的数据库访问层,一个是甲骨文的数据库访问层,通过读取配置文件调用其中的一个来实现不修改代码的情况下数据库变更,很牛逼的
wuyq11 2010-01-25
  • 打赏
  • 举报
回复
c#中反射,实际上就是动态使用类库,可以通过名称来引用类及其成员。
object obj;
Type t= obj.GetType();
PropertyInfo[] objPropertiesArray = t.GetProperties();
  • 打赏
  • 举报
回复
反射提供了一种当太的分析 创建和调用的机制
在.NET框架中,一个系统可以由多个程序集组成,一个程序集可能包含多个模块,而一个模块中会有很多类型
每个类型可以包含字段和方法,方法又可以包含输入和输出参数 特性等多重信息
在.NET中 反射机制使得动态分析程序集并且使用其中的类型和方法成为可能!
mengjun5200 2010-01-25
  • 打赏
  • 举报
回复
还是不明白,网站的模块?
fangyuantdy 2010-01-25
  • 打赏
  • 举报
回复
运行时决定调用哪个模块,很神奇的
Jelindu 2010-01-25
  • 打赏
  • 举报
回复
即传说中得晚绑定

62,243

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

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