获取对StructureMap容器​​的引用

时间:2015-03-12 09:37:55

标签: structuremap structuremap3

我是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的容器引用传递给其余应用程序代码的最佳方法是什么?

谢谢, 周杰伦。

1 个答案:

答案 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>();
    }
}