我對工作中的大型項目有一個設計理念,我想我已經想通了,但真的很想獲得關於a)一般想法的一些反饋,以及b)我的建議實現。將控制器工廠添加到ASP MVC
基本思想很簡單:我想創建一個ASP MVC應用程序,它可以在未來通過額外的控制器和視圖進行擴展,而無需重新編譯代碼。這個想法是讓一個MVC應用程序擁有一組非常基本的功能,然後通過添加另一個包含特定於該應用程序的控制器,數據和業務邏輯的'Application.dll'來擴展功能,這些視圖將被簡單地複製與主MVC應用程序安裝在同一個目錄中
問題是MVC在相同程序集內的類型上進行路由,所以即使我將路由定義移動到數據庫,MvcHttpHandler也無法路由因爲它沒有「知道」它的控制器類型,所以看到MVC代碼,我發現要加載控制器,他們只需調用Activator.CreateInstance,它只在當前程序集中看起來像
我的解決方案很簡單,但也許我錯過了一些東西:我會通過直接替換ControllerFactory(不知道如何去做)或通過在派生類中複製該功能來覆蓋MvcHttpHandler。新代碼將讀取請求並嘗試首先從當前程序集加載控制器,然後從擴展程序加載控制器。一旦找到合適的程序集,我將使用CreateInstance並將該程序集傳遞給它以獲取我想要的控制器。
謝謝,本。這就是我一直在尋找的。 – Gil 2009-02-20 03:29:59