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

一、环境

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 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().As().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

猜你喜欢

转载自blog.csdn.net/yh_18122221111/article/details/86540887