关于反射程序集的心得

2008年10月24日 关于反射程序集的心得    近来刚好在看一些关于反射的东西,之前一直没用过,真是惭愧,后来看了些资料后,觉得好像也不怎么难,就一句话:
   Assembly.Load(Assembly.GetExecutingAssembly().FullName).CreateInstance(Namespace + "." + ClassName);就搞掂了,

       但是很多貌似简单(或许真的是很简单吧)的问题就搞了我很久,就是关于那个程序集的问题,一开始的时候,

       只是知道Assembly.Load("程序集名")这个,只是知道用Assembly.GetExecutingAssembly().FullName这可以拿到了,

      看似一切都是那么的简单,但是当我在调试时,却发现我反射不出那个类,找了些资料才知道,原来是程序集出了问题了.

      正确点来说,是我用错了程序集,对于很多新人来说,或是刚接触的反射的来说,可能并不怎么了解那些程序集是怎么一回事.

      我做了测试后得出:
       1.类
              所有的类是在同一个程序集中,所有的类都在App_Code的文件夹下(默认),在App_Code里,不管你分几个文件夹存放那些类,不管
              类中有多少个namespace,都只有一个程序集.
       2.用户控件
             每一个UserControl属于不同的程序集,不管你是否放在同一个文件夹里.
       3.页面
             每一个不同的页面都属于同一个程序集.不管程序代码的命名空间是否一致.在运行时,所有页面的命令空间会默认显示
             为"ASP",而你加的命名空间,则和页面的名字加起来统称为基类名了.

       关于反射Assembly.Load("程序集").CreateInstance("命名空间.类"),而不管在哪一层写这段代码其中的("程序集")
读取的实际是web层bin文件夹下的dll,也就是说你反射的类的程序集dll在web层的bin下必须有,当我们的程序运行或发布时,.Net工具会自动
的添加当前项目的类的dll,页面的dll,还有用户控件的dll.
       注意CreateInstance()一定是命名空间.类名,否则创建的实例为空
              Assembly.Load("程序集名")
              Assembly.LoadFrom("程序集实际路径")
  希望我这些总结可以给那些刚入门的朋友一点帮助,本人才疏学浅,要是有什么不对的地方,还忘朋友倍们指出.

  在此赋上我的测试代码.Reflect程序集测试例子  ,大家下载后,用VS中打开后,可以直接浏览default,和default2这两个页面,并做些对比,相信这时你会明白很多.

posted @ 2008-10-24 13:08 史前大暴龙 阅读(2069) | 评论 (9) | 编辑2008年7月7日 未能加载文件或程序集“System.Web.Extensions.Design, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35” 未能加载文件或程序集“System.Web.Extensions.Design, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”
或它的某一个依赖项。系统找不到指定的文件
将asp.net ajax安装上,然后将X:/Program Files/Microsoft ASP.NET/ASP.NET 2.0 AJAX Extensions/v1.0.61025
 目录下的System.Web.Extensions.Design.dll文件加到项目的bin目录下,文件复制到网站bin目录 下后再次运行,
安装了asp.net ajax后会有三个dll文件

System.Web.Extensions.Design.dll

AJAXExtensionsToolbox.dll

System.Web.Extensions.dll

一般应该将这三个文件都添加到项目的bin目录下,要保险的话,全部复制进去吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值