ObjectFactory的等价物是什么?注入StructureMap 3.0
本文关键字:StructureMap 注入 等价物 是什么 ObjectFactory | 更新日期: 2023-09-27 18:06:12
我最近升级到StructureMap 3.0,注意到ObjectFactory。注射器不见了。这个方法提供的简单注入配置的等效是什么?
如前所述,3.0将许多方法移到了ObjectFactory.Container
。Inject
在那里,但ObjectFactory
将在4.0时被删除。所以要避免这种方法。
Inject
和许多方法都在Container
类中。这不是像ObjectFactory
那样的静态类。为了解决这个问题,你可以这样配置:
var container = new Container(x =>
{
x.For<IFooBar>().Use<FooBar>();
}
container.Inject(myObject);
这只适用于我在同一个类中,但有时你需要在控制器中创建IContaner
类并在项目启动时创建Container
,在这种情况下,你可以这样做:
public MyController(ISession session, IContainer container)
{
_session = session;
_container = container;
}
public void DoSomeStuff()
{
_container.Inject(new FooBar());
}
IContainer
可以使用依赖解析器注入。在我的情况下,我使用System.Web.Mvc.DependencyResolver
与自定义StructureMapDependencyResolver
,所以这个DependencyResolver.Current.GetService<IContainer>().Inject(myService);
也是可能的。