Autofac手动注入及自动注入示例

参考:http://www.cnblogs.com/xinchuang/archive/2013/05/07/3065433.html#2911661

一、环境

   vs2012、mvc4、.Net Framework4.5

二、过程

  1、新建项目,ASP.NET MVC 4 Web应用程序,确定,Internet应用程序,确定

  2、工具,库程序包管理器,管理解决方案的NuGet程序包

  3、选择联机,右上角输入autofac搜索

  4、安装Autofac和Autofac Integration mvc4

  5、建立业务实体项目,解决方案右键,添加,新建项目,类库,Core

  6、项目Core里面建立年级类 Grade ,设为public ,添加属性 Name    public string Name{get;set;}  (C#自动属性)

  7、建立业务逻辑项目,解决方案右键,添加,新建项目,类库,Services

  8、项目Services要引用项目Core,用到实体Grade。

  8、项目Services里面建立接口IGradeService,设为public,添加方法GetAllGrade(),  IList<Grade> GetAddGrade();  看最后代码

  9、项目Services里面建立类GradeService,继承接口IGradeService,实现方法GetAllGrade()  ,看最后代码

  10、主项目MvcApplication1引用项目Services和项目Core。

  11、修改HomeController里面Index方法,改为如下,注意引用

         

 private IGradeService _gradeService;
      
        public HomeController(IGradeService gradeService)
        {
            _gradeService = gradeService;
        }

        public ActionResult Index()
        {
            var model = _gradeService.GetAllGrade().ToList();

            return View(model);
        }

  12、修改页面Index.cshtml ,添加如下代码

@using Core;
@model List< Grade>

@{
    ViewBag.Title = "Home Page";
}

@foreach (var item in Model)
{

    @item.Name <br />
   
}

   13、修改Global.asax,在Application_Start()方法里面添加如下代码,注意引用Autofac、Autofac.Integration.Mvc以及别的引用

    

//依赖注入
var builder = new ContainerBuilder();
builder.RegisterType<GradeService>().As<IGradeService>().InstancePerHttpRequest();

builder.RegisterControllers(Assembly.GetExecutingAssembly());
builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly())
.AsImplementedInterfaces();
var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));


 注意:DependencyResolver.SetResolver(new AutofacDependencyResolver(container)); 这个必须放在builder.RegisterControllers(Assembly.GetExecutingAssembly());的后面,不然会出现错误:没有为该对象定义无参数的构造函数。

 14、运行

三、关于Autofac自动注入模式 参考:http://www.cnblogs.com/n-pei/archive/2013/01/24/2875674.html   注意:接口要继承IDependency。他的代码:http://pan.baidu.com/s/1sjwb7Z3

四、代码:http://pan.baidu.com/s/1ntE0Acp