我最近升级到 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 回答