2011-08-03 28 views
0

我正在將一系列控制器集成到現有項目中,該項目已包含使用Castle Windsor進行DI/IoC的控制器。我修改了安裝程序,只在特定的命名空間(特別是根目錄)中註冊控制器。此修改似乎正在工作。當我嘗試訪問未使用Castle Windsor並位於不同名稱空間(特別是自定義區域)的控制器時,出現錯誤消息:「沒有找到支持服務[控制器名稱]的組件」。將「傳統」控制器與Castle-Windsor控制器相結合。這可能嗎?

是否可以將「傳統」控制器與使用Castle Windsor的控制器在單個項目中混合使用?

這是否有意義?

+0

什麼是「傳統控制器」,它與其他控制器有何不同? –

+0

「傳統」,在這個意義上說,是一個不使用DI或IoC的控制器。很基本的控制器。 – mtm927

回答

1

如果您遇到該錯誤,則嘗試通過容器解析控制器(直接或間接)。

如果您有一個單獨的邏輯路徑,需要一個未從容器註冊的控制器,則不會阻止您撥打new MyController()

順便說一句,考慮到控制器使用容器有點倒退。容器管理你的實例 - 你的實例不知道它們是否是容器管​​理的。

+0

我可以在同一個項目中使用兩套控制器,其中一套使用Castle Windsor,另一套不使用? – mtm927

+0

絕對如此。容器不會干擾它不管理的任何事情。即使容器管理一個控制器的實例,也不會阻止你獨立於容器創建它。同樣,您的錯誤消息表明容器與您嘗試使用控制器的方式有關,所以問題可能出在您如何創建控制器,而不是它在同一個項目/組件中。 –

相關問題