Autofac + MVC5:解决服务的依赖关系

时间:2015-01-02 16:30:08

标签: asp.net asp.net-mvc autofac code-injection

我已经完成了使用Autofac + MVC5解决控制器依赖性的基础知识。但是,我想知道如何将依赖项注入服务。

给定样本定义,如何使用Autofac解析必要的依赖项来创建/获取类的实例化副本?

Bar : IBar
{

  Public Bar(IFoo foo, IPanda panda)

{}


}

1 个答案:

答案 0 :(得分:1)

最终,它归结为在Container中注册类型。如:

var builder = new ContainerBuilder();
builder.RegisterType<Bar>().As<IBar>();
var container = builder.Build();

我假设你在初始化过程中使用Builder有类似的代码。

注册和配置依赖项,生命周期,拦截器等有几种不同的方法,更多信息请点击此处: http://docs.autofac.org/en/latest/register/registration.html

一旦注册了所有内容,每当Autofac尝试实例化您的控制器时,它都会检查您的控制器的构造函数,当它发现IBar作为依赖项时,它会查找它的容器注册和相应的实例化。

同样适用于尝试实例化IBar,它会注意IFooIPanda并重复相同的过程。

主要区别在于Autofac支持自动注册您的控制器,只是为了免除您手动注册每个控制器的麻烦。

所以最后,它将以这种方式链接,根据需要创建依赖关系。 我倾向于通过直接请求依赖项来避免使用ServiceLocator样式的实例化,并且让Autofac在构造期间提供依赖项。

相关问题