新建MVC项目,添加程序集引用

定义接口ILog

 public interface ILog
{
string Save(string message);
}

类TxtLog实现接口ILog

public class TxtLog:ILog
{
public string Save(string message)
{
return "TxtLog";
}
}

类DbLog实现接口ILog

  public class DbLog:ILog
{
public string Save(string message)
{
return "DbLog";
}
}

修改HomeController里面Index方法,改为如下,注意引用

     private ILog _log;

        //构造器注入
public HomeController(ILog log)
{
_log = log;
} // GET: /Home/ public ActionResult Index()
{
ViewBag.Message = "Welcome to ASP.NET MVC!";
ViewBag.LogTypeName = _log.Save("");
return View();
}

修改页面Index.cshtml ,添加如下代码

<!DOCTYPE html>

<html>
<head>
<meta name="viewport" content="width=device-width" />
<title>Index</title>
</head>
<body>
<div>
<h2>ILog's type name is @ViewBag.LogTypeName</h2>
</div>
</body>
</html>

修改Global.asax,在Application_Start()方法里面添加如下代码,注意引用Autofac、Autofac.Integration.Mvc以及别的引用

 protected void Application_Start()
{
AreaRegistration.RegisterAllAreas(); WebApiConfig.Register(GlobalConfiguration.Configuration);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles);
//依赖注入
ContainerBuilder builder = new ContainerBuilder();
builder.RegisterType<TxtLog>().As<ILog>().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());的后面,不然会出现错误:没有为该对象定义无参数的构造函数。

运行结果

最新文章

  1. Toad for Sqlserver
  2. 【直播】APP全量混淆和瘦身技术揭秘
  3. GIS规划应用——基于哈夫模型的GIS服务区分析
  4. 电脑技巧:Win8/Win10无法打开这个应用|无法使用内置管理员账户的完美解决方法
  5. 关于JavaScript的浅拷贝和深拷贝
  6. 根据终端分配不同的url地址
  7. 矩形嵌套 南阳理工ACM
  8. WOSA/XFS及SP综述
  9. 设计模式学习——准备(UML类图)
  10. VS2008 ctrl+shift+F热键冲突
  11. oracle execute immediate
  12. epoll的LT和ET模式
  13. ArrayList 遍历
  14. inline函数不能在for循环中使用的原因
  15. Pod install Error List
  16. cuda编程-卷积优化
  17. pandas pivot_table或者groupby实现sql 中的count distinct 功能
  18. String split方法与Guava Splitter用法区别
  19. fdisk分区和挂载
  20. typescript接口的概念 以及属性类型接口

热门文章

  1. 标准C程序设计七---50
  2. ping探测在线主机
  3. docker mysql 导入导出数据
  4. vSphere Client 更改 ESX/ESXi 主机的端口
  5. Java 界面编程【02】事件注册
  6. netframework中等待多个子线程执行完毕并计算执行时间
  7. pycharm上传代码到码云(详细)
  8. HDU 1011 Starship Troopers (树dp)
  9. Android-Service基本用法、AIDL、Binder连接池详解
  10. 邁向IT專家成功之路的三十則鐵律 鐵律九:IT人社群互動之道-縮小自己