0

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

谢谢,杰。

4

1 回答 1

3

只需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>();
    }
}
于 2015-03-12T10:29:31.323 回答