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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM