1. 程式人生 > >一點一點學架構(四)—Spring.NET錯誤Cannot Resolve Type……

一點一點學架構(四)—Spring.NET錯誤Cannot Resolve Type……

背景

  在搭建完專案框架之後,當我利用單元測試來測一條線時,出現了以下錯誤:

這裡寫圖片描述

  Cannot resolve type[……]for object with name ‘ButtonBll’ defined in config.

  看到問題描述之後首先去檢查了自己配置檔案中的配置:

            <!--B層實現注入-->
            <object id="ButtonBll" type="ITOO.UIQueryProperties.BLL.ButtonBll,ITOO.UIQueryProperties.BLL"
singleton="false"/>

  仔細核對了類名,程式集名稱,確定配置沒有問題。
  這是哪裡的問題呢?

原因分析

  這是最初版本的架構圖

這裡寫圖片描述

  圖中紅色勾出來的地方是三個工廠,這裡用到了設計模式中的抽象工廠+反射+配置檔案。

  架構圖演變
  去掉了三個工廠,取而代之的是Spring.NET中的IOC容器。我們知道,IOC容器就像是一個物件製造工廠。
  那麼說這些有什麼用呢?
  還記得在用抽象工廠+反射+配置檔案時,有個經常出的錯誤嗎?
  未能載入檔案或程式集“DAL”或它的某一個依賴項。系統找不到指定檔案。


  當時的解決方案是將DAL層的生成路徑改到UI層的bin\Debug資料夾下。具體內容可參考《應用反射+配置檔案+抽象工廠時出現的錯誤和原因分析 》
  所以,雖然這兩次錯誤的提示不一樣,但是根源還是一樣的:沒有把實現層類庫的生成路徑改到應用程式啟動層。

解決

     這裡寫圖片描述

  這裡需要我們把BLL層和DAL層的生成路徑都改到 WCFService層的bin\Debug檔案下。(如果要進行單元測試,單元測試層引用的dll檔案都來自於WCFService層bin\Debug中的檔案即可)

總結

  前後兩次問題出現在不同的情景下,形式變了,但是道理沒變。無論是學習還是解決問題,我們都應該學會舉一反三。