All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
asp.net2.0中水晶报表的应用实例
用SQL批量插入数据_[SQL,Server教程]
Asp.Net、Ado.net,数据库编程超级攻略_[Asp.Net教程]
ASP.NET,中处理页面“回退”的方法_[Asp.Net教程]
使用SQLSERVER的扩展存储过程实现远程备份与恢复_[SQL Server教程]
动态网页制作技术PHP的拼写检查函数库_php资料_编程技术
理解javascript中的事件_JavaScript技术_编程技术
asp.net判断页面加载所用时间_[Asp.Net教程]
ASP.NET,2.0高级数据处理之数据绑定语法_[Asp.Net教程]
SQL Server 错误 ’80040e31’ 超时已过期_[SQL Server教程]
Reading number is top 10 pictures
男人,就要活出棱角
HongMenYan premiere XinLiangGong clairvoyant outfit PK YiFeiLiu1
8090后结婚的各种XX事
50个至今影响世界的德国发明
NeedWallpaper1
The real super beauty8
Is said to be a Chinese female artist fame explicit pictures before1
Sora aoi in China2
陪睡门马睿菈自曝写真 称首拍大尺度照片3
Chinese paper-cut grilles art appreciation7
Download software ranking
Tram sex maniac 2 (H) rar bag14
仙剑奇侠传98硬盘WINXP版
matrix1
Boxer's Top ten classic battle10
艳兽都市
卡丁车单机版
White deer villiage
Boxer vs Yellow4
Unix video tutorial6
Eclipse 4.2.2 For Win32
aaa published in(发表于) 2013/12/13 9:42:18 Edit(编辑)
使用C#的反射机制时遇到的问题_.net资料_编程技术

使用C#的反射机制时遇到的问题_.net资料_编程技术

使用C#的反射机制时遇到的问题_.net资料_编程技术-你的首页-uuhomepage.com
  项目DALFactory是采用工厂模式设计的,设计模式的书我也曾看过java的设计模式,理解也不太深刻,但对工厂模式还是较为熟悉,使用它可以根据需求返回不同的实例对象,在DALFactory项目中使用反射机制来实现依赖注入,当然,它的实现还是没有java中的spring那样灵活,强大,部分代码如下:


// <summary>
/// 抽象工厂模式创建DAL。
/// web.config 需要加入配置:(利用工厂模式+反射机制+缓存机制,实现动态创建不同的数据层对象接口)
/// DataCache类在导出代码的文件夹里
/// 可以把所有DAL类的创建放在这个DataAccess类里
/// <appSettings>
/// <add key="DAL" value="SmsSystem.SQLServerDAL" /> (这里的命名空间根据实际情况更改为自己项目的命名空间)
/// </appSettings>
/// </summary>
public sealed class DataAccess
{
private static readonly string path = ConfigurationManager.AppSettings["DAL"];
/// <summary>
/// 创建对象或从缓存获取
/// </summary>
public static object CreateObject(string path, string CacheKey)
{
 object objType = DataCache.GetCache(CacheKey);//从缓存读取
 if (objType == null)
 {
  try
  {
   //Assembly ass = new Assembly();
   objType = Assembly.Load(path).CreateInstance(CacheKey);//反射创建
   DataCache.SetCache(CacheKey, objType);// 写入缓存
  }
  catch(System.Exception ex)
  {
   string str = ex.Message;//
   SmsSystem.Utility.SaveLog.SaveInfoToLog(str, "errorLog", "异常");
  }
 }
 return objType;
}
/// <summary>
/// 不使用缓存,创建对象
/// </summary>
private static object CreateObjectNoCache(string path, string CacheKey)
{
 try
 {
  object objType = Assembly.Load(path).CreateInstance(CacheKey);
  return objType;
 }
 catch//(System.Exception ex)
 {
  //string str=ex.Message;// 记录错误日志
  return null;
 }
}
/// <summary>
/// 创建CustEmployee数据层接口
/// </summary>
public static SmsSystem.IDAL.ICustEmployee CreateCustEmployee()
{
 string CacheKey = path + ".CustEmployee";
 object objType = 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>
<add key="DAL" value="SmsSystem.SQLServerDAL"/>
…………
</appSettings>

  这样一个程序集,搞了好久,请教别人,结果弄清楚,是要项目的属性里设置程序集的名称,就可以生成SmsSystem.SQLServerDAL.dll这样的dll文件



  设置,重新生成 ,又出了一点问题,

  类型“SmsSystem.BLL.CustEmployee”同时存在于“c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files
\smssystem\3358d7f2\16ba9bb7\assembly\dl3\7296d5df\40ded961_96d8c601\BLL.DLL”
和“c:\WINDOWS\Microsoft.NET\Framework\v2.0.50727\Temporary ASP.NET Files\smssystem\3358d7f2
\16ba9bb7\assembly\dl3\644d894c\4cf8840a_9ad8c601\SmsSystem.BLL.DLL”
中 G:\ASP.NET\SmsSystem\Default.aspx.cs 22

  我仔细一看,原来在web项目的bin下面,原来的SQLServerDAL.dll还在,又多了个SmsSystem.SQLServerDAL.dll,哈哈,vs2005又一个没有自动删除掉的多余文件,昨天是一个项目文件AssemblyInfo.cs删除掉后,在相应的删除文件竟然没删除,不过,我把它手工删除掉,OK,一切正常,还是感谢告诉我怎么样改项目的Assembly name的朋友,不然我竟然找好久也不晓得怎么生成带上命名空间的dll。




添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.