国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 開發 > 綜合 > 正文

使用C#的反射機制時遇到的問題

2024-07-21 02:28:36
字體:
來源:轉載
供稿:網友
  項目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。
  • 本文來源于網頁設計愛好者web開發社區http://www.html.org.cn收集整理,歡迎訪問。
  • 發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    主站蜘蛛池模板: 泾源县| 岐山县| 威信县| 许昌市| 铜梁县| 宜都市| 湘阴县| 旬邑县| 安远县| 荆门市| 崇文区| 车致| 宿松县| 绍兴市| 潜山县| 商都县| 黎平县| 泾阳县| 于都县| 宁陵县| 临沂市| 涿鹿县| 河池市| 莫力| 大连市| 金华市| 榆社县| 长汀县| 忻城县| 赣州市| 景宁| 名山县| 岗巴县| 南溪县| 合江县| 盱眙县| 汉中市| 邵武市| 泸定县| 临高县| 耒阳市|