2010-03-11 61 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配置,它们可以在编译之外进行修改,因此有助于使应用程序更加模块化,因此将会(希望)不需要静态初始化。主要优点是您不必担心线程安全问题。