我的配置是这样的:
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/