c# - StructureMap,使用容器或对象工厂配置?

标签 c# structuremap

我的配置是这样的:

var container = new Container(x =>
                                              {
                                                  x.For<IEngine>().Use<V6Engine>();
                                                  x.For<ICar>().Use<HondaCar>();
                                              }
);

然后在我的 mvc Controller 操作中我做了:

ICar car = ObjectFactory.GetInstance<ICar>();

我应该以某种方式使用 Container 还是 ObjectFactory 来设置我的容器?它没有解决,所以我在 c# 控制台应用程序中测试了一些东西,如果我这样做了,它就起作用了:

ICar car = container.GetInstance<ICar>();

但这仅适用于容器在本地范围内的情况,而在网络应用程序中显然不是这样,因为事情已在 global.asax.cs 中连接

最佳答案

ObjectFactory 是容器实例的静态网关。如果您只想要容器的一个实例,并且想要一种简单的静态方法来获取它,请使用 ObjectFactory。您必须初始化 ObjectFactory,然后通过 ObjectFactory 检索您的实例。

或者,如果您想自己管理容器的生命周期,您可以创建一个 Container 实例,将初始化表达式传递给构造函数。然后,您从声明的变量中检索实例以存储容器。

在您的示例中,您混合了两种方法,但这是行不通的。

关于c# - StructureMap,使用容器或对象工厂配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7434388/

相关文章:

c# - 你能在正则表达式中向后阅读吗?

c# - 如何从 Azure 移动服务返回异常

c# - 覆盖虚拟方法时缺少返回类型协变的解决方法

.net - 我应该如何在这段 winform 代码中使用 IoC?

unit-testing - MSTest 内存不足异常

c# - 一旦物体撞到墙上,就从墙上反射一个物体

c# List<T> 排序 : by Chinese strokes

c# - Structuremap 是否支持开箱即用的 Lazy?

c# - 如何使用 StructureMap 扫描和注册具有属性的类?

asp.net - 如何在 ASP.NET 和 Windows 服务中使用相同的 DI 代码