【Autofac】在Asp.Net MVC5中的使用
1.在MVC项目下引入Autofac 和 Autofac.Mvc5的nuget包
ps:如何知道你的mvc的版本号?
在mvc的引用下找到system.web.mvc的dll
右键属性 查看版本
2.在mvc项目的App_Start文件夹下加AutofacConfig类
using Autofac; using Autofac.Integration.Mvc; using Own.BLL; using Own.DAL; using Own.Interface.Repositories; using Own.Interface.Services; using System.Web.Mvc; namespace Own.MVC.App_Start { public class AutofacConfig { /// <summary> /// 负责调用autofac框架实现业务逻辑层和数据仓储层程序集中的类型对象的创建 /// 负责创建MVC控制器类的对象(调用控制器中的有参构造函数),接管DefaultControllerFactory的工作 /// </summary> public static void Register() { //实例化一个autofac的创建容器 var builder = new ContainerBuilder(); #region 注入service builder.RegisterType<StudentService>().As<IStudentService>(); #endregion #region 注入Repository builder.RegisterType<StudentRepository>().As<IStudentRepository>(); #endregion //注入控制控制器 builder.RegisterControllers(typeof(MvcApplication).Assembly); //创建一个Autofac的容器 var container = builder.Build(); //将MVC的控制器对象实例 交由autofac来创建 DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); } } }
MVC和API不同的注入方式
var builder = new ContainerBuilder(); builder.RegisterControllers(Assembly.GetExecutingAssembly()); //Register MVC Controllers builder.RegisterApiControllers(Assembly.GetExecutingAssembly()); //Register WebApi Controllers builder.RegisterType<Type>().As<IType>(); var container = builder.Build(); DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); //Set the MVC DependencyResolver GlobalConfiguration.Configuration.DependencyResolver = new AutofacWebApiDependencyResolver((IContainer)container); //Set the WebApi DependencyResolver
3.在Global.asax中初始化
4.在Controller,Service 注入即可
未雨绸缪、富有耐心、律己严厉和不偏不倚