Что является эквивалентом ObjectFactory.Inject в StructureMap 3.0
Я недавно обновился до StructureMap 3.0 и заметил, что ObjectFactory.Inject отсутствует. Что является эквивалентом для простой конфигурации инъекций, предоставленной этим методом?
1 ответ
Как уже упоминалось, 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
может быть введен с помощью вашего Respendency Resolver. В моем случае я использую System.Web.Mvc.DependencyResolver
с обычаем StructureMapDependencyResolver
так это DependencyResolver.Current.GetService<IContainer>().Inject(myService);
тоже возможно.