我最近升级到 StructureMap 3.0 并注意到缺少 ObjectFactory.Inject。此方法提供的简单注入配置的等效项是什么?
1802 次
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 回答