What other IoC containers have an IInitializable like feature?
我在以前的项目中使用过温莎城堡,我非常喜欢它。对于我目前的项目,我希望使用不同的IOC容器。自2007年以来,Castle Windsor还没有发布过任何新版本,目前还没有1.0版,因此很难证明在商业环境中使用它的合理性。
我喜欢Castle Windsor的一个特点是,通过使服务实现
我一直把structuremap、autofac、unity和spring.net作为替代方案,但其中只有spring.net支持类似的东西,它会自动调用
我是否错过了我所看到的IOC容器中的类似功能?我使用IOC容器的方式有问题吗?或者是否有其他IOC容器确实支持IInitializable或init()之类的内容?
自动空调可以做到-他们称之为可启动
国际奥委会得到了它——它被称为初始化。你可以在这里找到它:github.com/philipraureano/linfu
城堡可能在一段时间内没有任何释放,但它仍在积极发展。你可以在这里得到最新的(相当稳定的)版本。
很快还会有一个正式的2.0版本发布。如果你知道它是好的,为什么不使用你已经知道的呢?
使用structuremap,您可以这样做:
1 2 3 | ForRequestedType<IFoo>() .TheDefaultIsConcreteType<Foo>() .OnCreation(x => x.Init()); |
这不像在类上实现"初始化"接口那么简单,但也意味着您不需要通过继承特定于DI容器的接口(尽管我不确定实际存在的问题有多严重),将类实现与您对DI容器的选择联系起来。
我相信构造函数注入现在已经被广泛使用了,对于那些无法让DI容器为您执行对象构造(例如ASP.NET WebForms)的情况,属性注入被广泛认为是一种回退。但我可能错了,这只是我对这个问题的看法!
您真的认为属性注入"清理了代码并进行了相当多的测试"吗?这很有意思,因为我认为恰恰相反,我认为构造器注入是"更干净的",我猜测这可能只是因为我通常是这样做的,所以我习惯了这一点。:)