參考: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