如何使用Autofac和Asp.Net MVC解析实例

时间:2014-10-17 12:58:22

标签: asp.net-mvc autofac

我刚刚开始试用Autofac,我觉得我在解决具体课程时感到困惑。

我已设法将我的接口注册到我的Concrete类,如下所示

builder.RegisterType<TestClass>().As<ITest>();
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

这很好。我遇到的问题是如何在我的mvc控制器中获取此实例?我读过的大多数内容都说我需要创建一个新的ContainerBuilder实例,然后调用scope.Resolve方法,但这肯定是不好的做法,并且每个控制器都不需要它?

我认为混淆是何时以及如何访问'Container'以便我可以在需要时调用resolve方法。

我可能已经猜到了,这是一个新手!

1 个答案:

答案 0 :(得分:9)

一种方法是使用控制器构造函数,因为Autofac将为您处理:

public class MyController : Controller
{
    private ITest _test;

    public MyController(ITest test)
    {
        _test = test;
    }
}

如果您不想使用构造函数并为您注入依赖项,可以在控制器操作方法中执行此操作:

var test = DependencyResolver.Current.GetService<ITest>()