获取对 StructureMap 容器的引用

Getting Reference to StructureMap Container

我是 StructureMap 的新手,有一个场景我想获取容器的句柄。

我正在 Global.asax

的 Application_Start 中构建 Web API 服务初始化 StructureMap 容器
IContainer container = IoC.Initialize();
GlobalConfiguration.Configuration.DependencyResolver = new MyDependencyResolver(container);

但想访问我的控制器中的容器以获取容器中对象的实例。

我知道我可以调用 container.GetInstance 并指定要获取的类型,但由于我没有使用 ObjectFactory 并在 Global.asax 中初始化了容器,我不知道如何访问它在我的控制器中。

将对容器的引用从 Global.asax 传递到其余应用程序代码的最佳方式是什么?

谢谢, 周杰伦

只需在控制器的构造函数中添加 IContainer 依赖项。

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