啟動除錯, 型別初始值設定引發異常
感覺應該是新建專案Form1的問題, 因為該三層架構在另一個Winform程式中執行正常. 在另一個BS程式中也執行正常.
於是開始了修改, 具體過程如下(基本是自己的腦殘行為記錄, 建議直接看結尾):
1.懷疑是語句錯誤, 對比兩個Winform程式的語句. 但沒發現什麼問題.
2.懷疑呼叫的靜態變數需要在Form1的建構函式中初始化一次, 才能正常使用, 於是在Form1的建構函式末尾又給該IBLL靜態變數進行了一次賦值, 沒有效果
3.懷疑是Form必須完全載入後, 才能呼叫介面物件(怎麼可能會有這種要求?). 於是在Form1中新增按鈕, 在載入完Form後, 點選按鈕建立IBLL介面物件, 呼叫方法, 繼續報錯.
4.懷疑Form的啟動窗體不能呼叫介面(窗體都一樣吧), 在Form1載入完後, 點選按鈕開啟Form2, 然後點選Form2的按鈕, 建立IBLL物件,呼叫方法, 繼續報錯
5.沒有辦法, 直接呼叫BLL層方法, 追蹤BLL層程式碼. 發現正常的Winform程式中, BLL中的例項化IDAL物件的語句都正常執行(這個BLL類中有7個IDAL介面變數), 而第二個程式在執行第一個建立IDAL物件語句後就直接跳出BLL頁面. 問題就在這裡了吧
6.直接在Form1中呼叫DAL層方法, 追蹤斷點, 在DAL層的初始化sql連結字串語句的位置跳出, 發現DAL層中sql連線字串是使用ConfigurationManager.....
好吧, 我新建的Winform程式沒有寫配置檔案...
總結:
型別初始值引發異常, 採用事後諸葛理解法, 應該是指在我們呼叫的某一個物件或方法內的一個初始化語句發生了錯誤.
放在本案例中, 呼叫IBLL介面時, 初始化IBLL介面引發了異常, 而該異常是初始化IDAL介面引發的異常, 而IDAL介面初始化異常是由於DAL層中sql連結字串的初始化引發的異常--沒有對應的配置檔案資料
介面的使用一定程度上提高了開發效率, 有利於團隊開發, 但如果其中某一個環節出了問題, 又很難除錯.
這次的問題在於, DAL層告訴UI層, 你需要一個config檔案, 但俺忘了...