我在之前的项目中一直在使用 Castle Windsor,我非常喜欢它。对于我当前的项目,我希望使用不同的 IoC 容器。Castle Windsor 自 2007 年以来没有发布任何新版本,并且仍然没有 1.0 版,因此很难证明在商业环境中使用它是合理的。
我喜欢 Castle Windsor 的一件事是,在设置了所有依赖项之后,您可以让容器在您的服务上调用 Initialize 方法,只需让服务实现即可IInitializable
。我经常使用这个。它使进行属性注入而不是构造函数注入变得容易,并且可以清理代码和进行相当多的测试。
我一直在寻找 StructureMap、AutoFac、Unity 和 Spring.Net 作为替代方案,但其中只有 Spring.Net 支持类似的东西,它会自动调用一个Init()
方法。不幸的是,Spring.Net 并不真正支持我想要使用 IoC 容器的方式(它基于字符串键而不是接口声明注入,因此它的自动装配支持也受到限制)
我是否错过了我查看的 IoC 容器中的类似功能?我使用 IoC 容器的方式是否有问题?或者是否有其他 IoC 容器支持 IIinitializable 或 Init() 之类的东西?