.net c# 類型初始值設定項引發異常


連續兩天都為這個運行時錯誤“類型初始值設定項引發異常”而煩惱,調試也不知道哪里出了問題。上網Google一下,一大堆相同的問題,可是按照那些方法折騰來折騰去,問題還是一樣。最后在CSDN上發帖子問了,果然“重賞之下必有勇夫”,很快就有高手回復了,問題也隨着解決了。哈哈。在此寫個隨筆,以后如果大家遇到類似問題,也可參考一下,自己也做個備忘,不然放在電腦上,又找不到,我的電腦文件到處亂放,有時連我自己都找不到^_^。
  問題是這樣嘀:
  項目采用了三層架構和工廠模式,並借鑒了PetShop的架構,因為這個項目也是采用分布式的數據庫,目前只有三個數據庫,主要出於提高訪問性能考慮。
  原來是按照網上對PetShop的介紹來給各項目添加引用的。
  1、Web 引用 BLL。 
     2、BLL 引用 IDAL,Model,使用DALFactory創建實例。 
     3、IDAL 引用 Model。  
     4、Model 無引用。  
     5、DALFactory 引用IDAL,通過讀取web.config里設置的程序集,加載類的實例,返回給BLL使用。  
     6、SQLServerDAL 引用 Model和IDAL,被DALFactory加載的程序集,實現接口里的方法。
    問題就出在這里了。頂!
    按照PetShop的架構,是DALFactory程序集里通過反射創建針對特定數據訪問層里的對應類實例,這樣BLL調用接口時就知道調用這個對應類實例里的實現方法。
    而反射動態加載程序集是通過這種方法 Assembly.Load("程序集").CreateInstance("命名空間.類"),其中的“程序集”讀取的是Web層bin文件夾下對應的dll,即反射加載的程序集dll在Web層的bin文件夾必須有,不然就會出現如題的錯誤。問題解決了~^_^
    出現這種錯誤的另兩種情況,這也是在網上看到的,一起寫下來。
    一、Web.config配置錯誤。
          在DALFactory程序集里的DataAccess類里,通過
          private static readonly string path = ConfigurationManager.AppSettings["WebDAL"];
          來獲得程序集的名稱的。
          在Web.config里我的配置如下:
          <appSettings>
          <add key="WebDAL" value="PDMS.SQLServerDAL"/>
          </appSettings>
    二、程序集名稱和默認命名空間錯誤。
          在各個程序集右鍵--屬性,看看程序集名稱和默認命名空間有沒有寫錯。這個問題也可能導致如題的錯誤~~

引用:http://www.cnblogs.com/bluecountry/archive/2009/02/15/1390936.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM