1

为什么要离开 StructureMap?

正如Jeremy Miller(StructureMap 背后的人)所说:不支持 Silverlight

为什么我需要 Silverlight 支持?

我开始编写WindowsPhone应用程序,所以看起来我需要这个。

这个问题的目的?

我喜欢StructureMap。它功能齐全,我在许多项目中都使用过它。但我必须选择一个新的。我应该选择哪一个?

AutoFac?

忍者?

其他工具?

我想从新框架中得到什么?

支持 Windows 电话。

现在我正在使用StructureMap注册我的单例依赖项,如下所示:

ObjectFactory.Configure(Function(config)
config.For(Of TPlugin).Singleton.Use(Of TConcrete)())

或者这个(对于泛型类型):

ObjectFactory.Configure(Function(config)
config.For(Of GetType(IRepository(Of ))).Use(Of GetType(Repository(Of )))())

或转发类型:

ObjectFactory.Configure(Sub(config) config.Forward(Of TResolveBy, TRequested)())

我想用接近 StructureMap 的语法(或更好的语法)做同样的事情

我想从你这里得到什么?

你对他们有什么经验吗?

你更倾向哪个?

您建议在 Windows Phone 应用程序中使用哪一个?

还有其他建议吗?

更新:

具体类型的生命周期初始化(使用函数而不是仅仅定义类型)呢?在结构图中:

config.For(pluginType).Singleton.Use(concreteType)

或者

config.For(Of TPlugin).HybridHttpOrThreadLocalScoped.Use(SomeFunction)
4

4 回答 4

1

当我前一段时间做了一些研究来决定使用什么 DI 框架时,我发现很多人似乎更喜欢 Ninject。从那以后我一直在使用它,并且喜欢它。Remo Gloor 使用它及其各种扩展做了一些非常棒的工作,几天前我们刚刚升级到 Ninject 3。

绑定语法非常简单。我通常使用NinjectModule子类并说(在 C# 中):

Bind<TPlugin>().To<TConcrete>()

...我相信这与您现在正在做的事情非常相似。

于 2012-06-27T19:21:29.510 回答
1

我推荐 Ninject。我将它用于我的所有项目主要是因为它的自动绑定功能,它允许您自动组合接口及其实现而无需显式配置(如您的示例中) - 示例可以在这里找到。

您仍然可以像在代码示例中一样使用手动配置 - 查看 Ninject 文档以获取示例。

它似乎也支持 Silverlight,所以它应该对你有用。

编辑:

根据 StriplingWarrior 的评论,自动绑定语法的工作方式在最新版本的 Ninject 中发生了变化——查看这个 SO question了解详细信息。

于 2012-06-27T19:23:43.253 回答
1

我正在使用与 Caliburn Micro 一起打包的 SimpleContainer。 国际奥委会之战——重温

更新:SimpleContainer 还有一个单独的nuget包。

于 2012-06-28T03:04:56.290 回答
0

谁需要 IoC 工具?工厂和抽象工厂模式很简单,很棒,而且您永远不必怀疑它们是否支持 XYZ 技术。

于 2012-06-28T03:23:47.473 回答