2010-03-11 87 views
3

我試圖建立一個攔截框架(在C#),我可以簡單地實現一些接口,並通過使用一些靜態初始化,註冊我有一個共同的調度所有的攔截導彈在被調用晚點。問題實施攔截模式

問題在於這樣一個事實:我的攔截器的實現是從來沒有真正通過我的應用程序所引用,因此靜態構造函數永遠不會被調用,並因此,攔截器永遠不會註冊。

如果可能的話,我想保持我的攔截庫中的所有引用了我的申請,因爲這是我的(希望)強制執行在不同的模塊鬆耦合的方式。

希望這有一定的道理。讓我知道如果有什麼我可以澄清...

沒有人有任何想法,或者有更好的方式去實現我的攔截模式?

更新:我碰到Spring.NET。我之前聽說過它,但從未真正關注過它。這聽起來像是它有很多很棒的功能,對我所要做的事情會非常有用。有沒有人有任何使用Spring.NET的經驗?

TIA,
傑里米

回答

0

我強烈的建議。NET尋找一些現有的面向方面編程(AOP)的框架,因爲他們可能會完成你想在一個更廣義和維護要達到什麼時尚。他們中的大多數都是開源的,因此,如果他們不滿足您的需求,您可能可以擴展併爲項目做出貢獻。

更多細節:http://www.sharpcrafters.com/aop.net

+0

+1我推薦Spring和NHibernate爲這種模式的一個例子。您也可以查看如何在asp.net框架中處理Http模塊。它可能會比其他兩個更復雜,但它是構建攔截器框架的另一種方式。 – 2010-03-13 21:30:26

0

Spring.NET,統一框架和StructureMap可能是你最好的選擇。我過去所做的是使用MVC並創建了一個自定義控制器工廠來生成我的控制器。然而,使用依賴注入變得很困難,因爲NinJect等框架缺乏XML配置(Ninject使用流暢的API)。現在很難理解的原因是,你不能確定在運行時哪些模塊需要依賴注入。

上述三個IOC容器都具有某種形式的XML配置,它們可以在編譯之外進行修改,因此有助於使應用程序更加模塊化,因此將會(希望)不需要靜態初始化。主要優點是您不必擔心線程安全問題。