我是StructureMap的新手,并且有一个我希望得到容器句柄的场景。
我正在构建一个在Global.asax的Application_Start中初始化StructureMap容器的Web API服务
IContainer container = IoC.Initialize();
GlobalConfiguration.Configuration.DependencyResolver = new MyDependencyResolver(container);
但是想要在我的控制器中访问容器以获取容器中对象的实例。
我知道我可以调用container.GetInstance并指定要获取的类型,但由于我没有使用ObjectFactory并在Global.asax中初始化容器,因此我不知道在我的控制器中访问它的方法。
将对Global.asax的容器引用传递给其余应用程序代码的最佳方法是什么?
谢谢, 周杰伦。
答案 0 :(得分:2)
只需在控制器的构造函数中添加IContainer
dependendy。
public class MyController : IController
{
private readonly IContainer container;
public MyController(IContainer container)
{
this.container = container;
}
[HttpPost]
public ActionResult Execute(ViewModel viewModel)
{
var someType = this.container.GetInstance<ISomeType>();
}
}