仓酷云

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 669|回复: 8
打印 上一主题 下一主题

[学习教程] ASP.NET网页编程之利用C#的反射机制时碰到的成绩

[复制链接]
莫相离 该用户已被删除
跳转到指定楼层
楼主
发表于 2015-1-16 22:45:49 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
2003年中微软发布最新版本的ASP.netWebMatrix,对于我们喜欢用Asp.net来编程的朋友实在是个好消息,我也实实在在的将Asp.net更深入的研究了一下,以方便我以后更好的运用它,同时我也讲讲使用它的感受。成绩  项目DALFactory是接纳工场形式计划的,计划形式的书我也曾看过java的计划形式,了解也不太深入,但对工场形式仍是较为熟习,利用它能够依据需求前往分歧的实例工具,在DALFactory项目中利用反射机制来完成依附注进,固然,它的完成仍是没有java中的spring那样天真,壮大,部分代码以下:

//<summary>
///笼统工场形式创立DAL。
///web.config必要到场设置:(使用工场形式+反射机制+缓存机制,完成静态创立分歧的数据层工具接口)
///DataCache类在导出代码的文件夹里
///能够把一切DAL类的创立放在这个DataAccess类里
///<appSettings>
///<addkey="DAL"value="SmsSystem.SQLServerDAL"/>(这里的定名空间依据实践情形变动为本人项目标定名空间)
///</appSettings>
///</summary>
publicsealedclassDataAccess
{
privatestaticreadonlystringpath=ConfigurationManager.AppSettings["DAL"];
///<summary>
///创立工具或从缓存猎取
///</summary>
publicstaticobjectCreateObject(stringpath,stringCacheKey)
{
 objectobjType=DataCache.GetCache(CacheKey);//从缓存读取
 if(objType==null)
 {
  try
  {
   //Assemblyass=newAssembly();
   objType=Assembly.Load(path).CreateInstance(CacheKey);//反射创立
   DataCache.SetCache(CacheKey,objType);//写进缓存
  }
  catch(System.Exceptionex)
  {
   stringstr=ex.Message;//
   SmsSystem.Utility.SaveLog.SaveInfoToLog(str,"errorLog","非常");
  }
 }
 returnobjType;
}
///<summary>
///不利用缓存,创立工具
///</summary>
privatestaticobjectCreateObjectNoCache(stringpath,stringCacheKey)
{
 try
 {
  objectobjType=Assembly.Load(path).CreateInstance(CacheKey);
  returnobjType;
 }
 catch//(System.Exceptionex)
 {
  //stringstr=ex.Message;//纪录毛病日记
  returnnull;
 }
}
///<summary>
///创立CustEmployee数据层接口
///</summary>
publicstaticSmsSystem.IDAL.ICustEmployeeCreateCustEmployee()
{
 stringCacheKey=path+".CustEmployee";
 objectobjType=CreateObject(path,CacheKey);
 return(ICustEmployee)objType;
}
………………(别的数据层接口)
}
  由这一个类,就能够猎取必要用的数据会见层的实例,但是,我在利用过程当中却老是抛出非常,[System.IO.FileNotFoundException]={"未能加载文件或程序集“SmsSystem.SQLServerDAL”或它的某一个依附项。体系找不到指定的文件。":"SmsSystem.SQLServerDAL"},说假话,关于C#这排错和调试我还手生,我百思不得其解,为何会一用反射就非常呢,全部上往我往看反射的IPA,感到我的用法没毛病啊,何况,我看PetShop的例子就是如许差未几的写法,它为何能用,下战书调试了很久仍是在堕落,我发狠心往和petShop往对照,厥后终究发明,它的dll的名字有些怪,和我的分歧,它的都是如PetShop.SQLServerDAL.dll如许的名字,而我的就是个SQLServerDAL.dll,我感到极有多是这里有成绩,由于在wb.config里我设置过

<appSettings>
<addkey="DAL"value="SmsSystem.SQLServerDAL"/>
…………
</appSettings>
  如许一个程序集,弄了很久,就教他人,了局弄分明,是要项目标属性里设置程序集的称号,就能够天生SmsSystem.SQLServerDAL.dll如许的dll文件





  设置,从头天生,又出了一点成绩,

  范例“SmsSystem.BLL.CustEmployee”同时存在于“c:WINDOWSMicrosoft.NETFrameworkv2.0.50727TemporaryASP.NETFiles
smssystem3358d7f216ba9bb7assemblydl37296d5df40ded961_96d8c601BLL.DLL”
和“c:WINDOWSMicrosoft.NETFrameworkv2.0.50727TemporaryASP.NETFilessmssystem3358d7f2
16ba9bb7assemblydl3644d894c4cf8840a_9ad8c601SmsSystem.BLL.DLL”
中G:ASP.NETSmsSystemDefault.aspx.cs22

  我细心一看,本来在web项目标bin上面,本来的SQLServerDAL.dll还在,又多了个SmsSystem.SQLServerDAL.dll,哈哈,vs2005又一个没有主动删撤除的过剩文件,今天是一个项目文件AssemblyInfo.cs删撤除后,在响应的删除文件居然没删除,不外,我把它手工删撤除,OK,统统一般,仍是感激告知我怎样改项目标Assemblyname的伴侣,否则我居然找很久也不知道怎样天生带上定名空间的dll。简单的说:.net只有微软一家在做的,微软也不允许别人跟他做相同的工具,所以他就把需要的工具全部封装在.net的平台上了;而java是公开了。
金色的骷髅 该用户已被删除
沙发
发表于 2015-1-19 23:02:07 | 只看该作者
可以看作是VC和Java的混合体吧,尽管MS自己讲C#内核中更多的象VC,但实际上我还是认为它和Java更象一些吧。首先它是面向对象的编程语言,而不是一种脚本,所以它具有面向对象编程语言的一切特性。
分手快乐 该用户已被删除
板凳
发表于 2015-1-25 11:23:20 | 只看该作者
最强的技术支持WebService,而且有.NET的所有library做后盾。而且ASP.NET在.NET3.5中还有微软专门为AJAX开发的功能--ASP.NETAJAX。
若相依 该用户已被删除
地板
发表于 2015-2-2 21:55:01 来自手机 | 只看该作者
我的意思是.net好用,从功能上来说比JAVA强还是很明显的。
因胸联盟 该用户已被删除
5#
发表于 2015-2-8 08:00:52 | 只看该作者
ASP(ActiveServerPages)是Microsfot公司1996年11月推出的WEB应用程序开发技术,它既不是一种程序语言,也不是一种开发工具,而是一种技术框架,不须使用微软的产品就能编写它的代码。
兰色精灵 该用户已被删除
6#
发表于 2015-2-25 01:44:37 | 只看该作者
ASP.Net摆脱了以前ASP使用脚本语言来编程的缺点,理论上可以使用任何编程语言包括C++,VB,JS等等,当然,最合适的编程语言还是MS为.NetFrmaework专门推出的C(读csharp)。
海妖 该用户已被删除
7#
发表于 2015-3-7 15:16:14 | 只看该作者
JSP/Servlet虽然在国内目前的应用并不广泛,但是其前途不可限量。
飘灵儿 该用户已被删除
8#
发表于 2015-3-15 08:42:01 | 只看该作者
那么,ASP.Net有哪些改进呢?
谁可相欹 该用户已被删除
9#
发表于 2015-3-21 22:47:36 | 只看该作者
ASP是把代码交给VBScript解释器或Jscript解释器来解释,当然速度没有编译过的程序快了。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|仓酷云 鄂ICP备14007578号-2

GMT+8, 2025-1-4 03:17

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表