建立 空的 MVC4项目

首先引用 NuGet 里 autofac 和 autofac .integration. mvc

然后 建立Model

public class Person

{

public int Id { get; set; }

public string Name { get; set; }

public int Age { get; set; }

public string Address { get; set; }

}

public interface IPersonRepository

{

IEnumerable GetAll();

Person Get(int id);

Person Add(Person item);

bool Update(Person item);

bool Delete(int id);

}

public class PersonRepository : IPersonRepository

{

List person = new List();

public PersonRepository()

{

Add(new Person { Id = 1, Name = "joye.net1", Age = 18, Address = "中国上海" });

Add(new Person { Id = 2, Name = "joye.net2", Age = 18, Address = "中国上海" });

Add(new Person { Id = 3, Name = "joye.net3", Age = 18, Address = "中国上海" });

}

public IEnumerable GetAll()

{

return person;

}

public Person Get(int id)

{

return person.Find(p => p.Id == id);

}

public Person Add(Person item)

{

if (item == null) { throw new ArgumentNullException("item"); }

person.Add(item);

return item;

}

public bool Update(Person item)

{

if (item == null) { throw new ArgumentNullException("item"); }

int index = person.FindIndex(p => p.Id == item.Id);

if (index == -1)

{

return false;

}

person.RemoveAt(index);

person.Add(item); return true;

}

public bool Delete(int id)

{

person.RemoveAll(p => p.Id == id);

return true;

}

}

再新建 HomeController 与相应的 Index.cshtml 在HomeController 声明 属性及构造函数

public class HomeController : Controller

{

public IPersonRepository _personRepository { get; set; }

public HomeController(IPersonRepository personRepository)

{

_personRepository = personRepository;

}

public ActionResult Index()

{

var item = _personRepository.Get(1);

return View();

}

}

最后在global.asax.cs 的Application_Start() 里实现注入

using Autofac;
using Autofac.Integration.Mvc;

public class MvcApplication : System.Web.HttpApplication

{

protected void Application_Start()

{

var builder = new ContainerBuilder();

builder.RegisterType<PersonRepository>().As<IPersonRepository>(); //注册接口服务

builder.RegisterControllers(Assembly.GetExecutingAssembly());//构造函数注入

//builder.RegisterControllers(Assembly.GetExecutingAssembly()).PropertiesAutowired();//属性注入

var container = builder.Build();//构建

System.Web.Mvc.DependencyResolver.SetResolver(new AutofacDependencyResolver(container));//开始注入

WebApiConfig.Register(GlobalConfiguration.Configuration);

FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);

RouteConfig.RegisterRoutes(RouteTable.Routes);

BundleConfig.RegisterBundles(BundleTable.Bundles);

}

}

MVC Autofac构造函数注入的更多相关文章

  1. ASP.NET MVC Autofac自动注入

    依赖注入容器有很多插件,我用过Unity和Autofac,这两个插件给我最明显的感觉就是Autofac很快,非常的快,毕竟是第三方开发的,而Unity相对而言性能比较稳定 下面附上Autofac自动注 ...

  2. Mvc Autofac构造器注入

    新建MVC项目,添加程序集引用 定义接口ILog public interface ILog { string Save(string message); } 类TxtLog实现接口ILog publ ...

  3. ASP.NET MVC Autofac依赖注入的一点小心得(包含特性注入)

    前言 IOC的重要性 大家都清楚..便利也都知道..新的ASP.NET Core也大量使用了这种手法.. 一直憋着没写ASP.NET Core的文章..还是怕误导大家.. 今天这篇也不是讲Core的 ...

  4. MVC Autofac依赖注入

    通过Dll实现全部类的属性注入,该演示实例主要通过多层架构中单一的对象方式来演示,没有采取接口的方式, 新建AutoFacHelper类,如下代码: public class AutoFacHelpe ...

  5. MVC autofac 属性注入

    Global文件 public class MvcApplication : System.Web.HttpApplication { private static IContainer Contai ...

  6. Autofac 的构造函数注入方式

    介绍 该篇文章通过一个简单的 ASP.NET MVC 项目进行介绍如何使用 autofac 及 autofac 的 MVC 模块进行依赖注入.注入方式通过构造函数. 在编写 aufofac 的依赖注入 ...

  7. ASP.NET MVC IOC依赖注入之Autofac系列(二)- WebForm当中应用

    上一章主要介绍了Autofac在MVC当中的具体应用,本章将继续简单的介绍下Autofac在普通的WebForm当中的使用. PS:目前本人还不知道WebForm页面的构造函数要如何注入,以下在Web ...

  8. ASP.NET MVC IOC依赖注入之Autofac系列(一)- MVC当中应用

    话不多说,直入主题看我们的解决方案结构: 分别对上面的工程进行简单的说明: 1.TianYa.DotNetShare.Model:为demo的实体层 2.TianYa.DotNetShare.Repo ...

  9. Autofac Getting Started(默认的构造函数注入)

    https://autofaccn.readthedocs.io/en/latest/getting-started/index.html The basic pattern for integrat ...

随机推荐

  1. AngularJS 日期转换字符串

    日期转换成字符串的办法有很多种,其中最简单的方法是 使用AngularJS的filter来实现. $filter('date')(date, 'yyyyMM'): $filter('date')(da ...

  2. Android延时执行的几种方法

    开启新线程 new Thread(new Runnable(){ public void run(){ Thread.sleep(XXXX); handler.sendMessage(); //告诉主 ...

  3. jsp内置对象作业3-application用户注册

    1,注册页面 zhuCe.jsp <%@ page language="java" contentType="text/html; charset=UTF-8&qu ...

  4. Swift开发小技巧--自定义Log

    Swift中的自定义Log OC中有宏的定义,可以定义自己的Log,但是Swif中没有宏的定义,想要实现类似OC中的自定义Log,必须实现以下操作 1.在AppDelegate.swift文件中定义一 ...

  5. HoG

    实现步骤 先计算每一个像素点位置上x和y方向上的梯度. 这样在每一个像素点位置上得到一个二维向量, 计算它的方向和模长 将图片分为一个个的cell, 如\(8\times 8\). 计算它的HOG: ...

  6. android 概述 及四大组件

    目录: 概述 四大组件 UI布局 概述 android studio中,gen很bin文件夹合并为built文件夹 四大组件 包括: 活动,服务,内容提供者,广播接收者 活动是一种包含用户界面的组件 ...

  7. EPUB书籍阅读器插件分享

    本文主要分享EPUB文件的打开方式, 包括如何使用火狐浏览器打开epub, 如何使用chrome打开epub, 如何使用IE浏览器打开epub文件: 1:使用火狐打开epub文件 如果有安装火狐浏览器 ...

  8. OO(Object Oriented)思想和PO(Procedure-Oriented)思想

    对象将需求用类一个个隔开,就象用储物箱把东西一个个封装起来一样,需求变了,分几种情况,最严重的是大变,那么每个储物箱都要打开改,这种方法就不见得有好处:但是这种情况发生概率比较小,大部分需求变化都是局 ...

  9. UItextView回收键盘的几种方式

    1.如果你程序是有导航条的,可以在导航条上面加多一个Done的按钮,用来退出键盘,当然要先实UITextViewDelegate. 代码如下: - (void)textViewDidBeginEdit ...

  10. 【BZOJ-1597】土地购买 DP + 斜率优化

    1597: [Usaco2008 Mar]土地购买 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2931  Solved: 1091[Submit] ...