我一直在使用温莎城堡在我以前的项目,我很喜欢它了。对于我目前的项目中,我希望使用一个不同的IoC容器。温莎城堡自2007年以来一直没有任何新的版本,但仍未在1.0的版本,所以很难在商业环境中使用它的理由。

一个我喜欢温莎城堡的事情是,你可以有后所有的依赖已经通过使服务实现IInitializable设置简单的容器调用初始化方法对您的服务。我用这个有很多。它可以很容易做到的,而不是构造函数注入财产注入和清理代码和测试了不少。

我一直在寻找StructureMap,AutoFac,团结和Spring.Net作为替代品,但这些只是Spring.Net支持类似的东西,它会自动调用一个方法Init()。不幸的是Spring.Net真的不支持我想和IoC容器的工作方式(它注入基于字符串键,而不是接口声明,因此它的自动装配支持太有限)

我错过的IoC容器我看了一个类似的功能?是我与IoC容器的工作错莫名其妙的方式?还是有其他的IoC容器在不支持类似IInitializable或init()?

有帮助吗?

解决方案

Autofac可以做到这一点 - 他们称之为可启动

其他提示

使用StructureMap,你可以做这样的事情:

ForRequestedType<IFoo>()
  .TheDefaultIsConcreteType<Foo>()
  .OnCreation(x => x.Init());

这并不是因为实现你的类中的“初始化”界面,方便,但同时也意味着你不需要通过从DI容器特定的接口继承,以配合您的类实现到您选择DI容器的(虽然我不知道如何多,在现实中是一个问题)。

我相信,构造函数注入是更为常用,现在,物业注入被广泛视为对案件退回它是不可行得到DI容器为您(如ASP.NET web表单)执行对象的构造。我可能是错有不过,这只是我的主题视图!

你真的认为,物业注入“相当清理代码和测试了一下”?这很有意思,因为我有点觉得相反 - 我觉得构造函数注入是“清洁”,和我猜测,可能仅仅是因为这就是我常做,所以这就是我已经习惯了。 :)

城堡可能没有在一段时间内的任何版本,但它仍然积极发展。你可以得到最新的(相当稳定)建立这里

有也将会相当快做官V2.0版本。为什么不使用你已经知道,如果你知道它的好?

LinFu.IOC有它 - 这就是所谓的IInitialize。你可以在这里找到它:github.com/philiplaureano/LinFu

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top