打赏

【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 注入即可

 

 

 

posted @ 2018-09-28 12:07  cksun  阅读(1271)  评论(0编辑  收藏  举报