ObjectFactory的等价物是什么?注入StructureMap 3.0

本文关键字:StructureMap 注入 等价物 是什么 ObjectFactory | 更新日期: 2023-09-27 18:06:12

我最近升级到StructureMap 3.0,注意到ObjectFactory。注射器不见了。这个方法提供的简单注入配置的等效是什么?

ObjectFactory的等价物是什么?注入StructureMap 3.0

如前所述,3.0将许多方法移到了ObjectFactory.ContainerInject在那里,但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);也是可能的。