您的位置:首页 > 其它

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

2016-02-17 16:47 288 查看
http://www.cnblogs.com/heifengwll/p/3653309.html

参考: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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: