我正在尝试开发一个Interceptor框架(在C#中),我可以简单地实现一些接口,并通过一些静态初始化,使用一个公共Dispatcher注册我的Interceptor,以便稍后调用。 / p>
问题在于我的拦截器实现从未被我的应用程序实际引用,因此静态构造函数永远不会被调用,因此拦截器永远不会被注册。
如果可能的话,我想保留对我的Interceptor库的所有引用都不在我的应用程序中,因为这是我(希望)在不同模块之间强制松散耦合的方式。
希望这有一定道理。如果有任何我可以澄清的话,请告诉我......
有没有人有任何想法,或者更好的方法来实现我的拦截器模式?
更新:我遇到过Spring.NET。我之前听说过,但从未真正研究过它。听起来它有很多很棒的功能,对我正在尝试做的事情非常有用。有没有人有使用Spring.NET的经验?
TIA,
杰里米
答案 0 :(得分:0)
我强烈建议您查看一些现有的面向.NET的面向方面编程(AOP)框架,因为它们可能会以更通用和可维护的方式实现您想要实现的目标。其中大多数都是开源的,因此如果它们不能满足您的需求,您可以扩展并为项目做出贡献。
答案 1 :(得分:0)
Spring.NET,Unity Framework和StructureMap可能是您最好的选择。我过去所做的是使用MVC并创建了一个自定义控制器工厂来生成我的控制器。然而,使用NinJect等框架使用依赖注入变得困难,因为它缺少XML配置(Ninject使用流畅的API)。之所以难以接受的原因是你在运行时不确定你需要依赖注入的模块。
以上三个IOC容器都有某种形式的XML配置,可以在编译之外进行修改,因此有助于使您的应用程序更加模块化,因此(希望)不需要静态初始化。主要的好处是你不必担心线程安全问题。