5

我最近升级到 StructureMap 3.0 并注意到缺少 ObjectFactory.Inject。此方法提供的简单注入配置的等效项是什么?

4

1 回答 1

6

如前所述,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可以使用您的 Dependency Resolver 注入。就我而言,我正在使用System.Web.Mvc.DependencyResolver自定义StructureMapDependencyResolver,所以这DependencyResolver.Current.GetService<IContainer>().Inject(myService);也是可能的。

于 2014-09-12T20:34:40.727 回答