autofac官网:

http://autofaccn.readthedocs.io/en/latest/getting-started/index.html

autofac作为一个热门ioc框架,还是有了解一下的必要的。这里用两个小案例来简单说说autofac在.net framework控制台应用程序和asp.net mvc5 项目中的使用。

先从控制台应用程序开始。

首先nuget安装autofac,新建IDemo接口

namespace AutuFacDemo
{
interface IDemo
{
string Hello();
}
}

新建Demo类实现IDemo接口:

namespace AutuFacDemo
{
public class Demo :IDemo
{
public string Hello()
{
return "hello";
}
}
}

Program.cs:

using Autofac;
using System; namespace AutuFacDemo
{
class Program
{
private static IContainer Container { set; get; } static void Main(string[] args)
{
var builder = new ContainerBuilder();
builder.RegisterType<Demo>().As<IDemo>();
Container = builder.Build(); using (var scope = Container.BeginLifetimeScope())
{
var demo = scope.Resolve<IDemo>();
Console.WriteLine(demo.Hello());
Console.ReadKey();
}
}
}
}

这样就完成了一个最简单的控制台Demo。

现在开始使用mvc5案例。

nuget安装Autofac.Mvc5

同一解决方案内新建IBLL和BLL类库,IBLL存放IDemo.cs:

namespace IBLL
{
public interface IDemo
{
string Hello();
}
}

BLL存放Demo.cs

using IBLL;

namespace BLL
{
public class Demo :IDemo
{
public string Hello()
{
return "hello";
}
}
}

Global.asax.cs配置autofac:

using Autofac;
using Autofac.Integration.Mvc;
using BLL;
using IBLL;
using System.Web.Http;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing; namespace WebDemo
{
public class WebApiApplication : System.Web.HttpApplication
{
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
GlobalConfiguration.Configure(WebApiConfig.Register);
FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
RouteConfig.RegisterRoutes(RouteTable.Routes);
BundleConfig.RegisterBundles(BundleTable.Bundles); var builder = new ContainerBuilder();
builder.RegisterControllers(typeof(WebApiApplication).Assembly); builder.RegisterType<Demo>().As<IDemo>(); var container = builder.Build();
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
}
}
}

控制器配置Demo方法:

using IBLL;
using System.Web.Mvc; namespace WebDemo.Controllers
{
public class HomeController : Controller
{ private IDemo _demo; public HomeController(IDemo demo)
{
this._demo = demo;
} public ActionResult Index()
{
ViewBag.Title = "Home Page"; return View();
} public ActionResult Demo()
{
string hello = _demo.Hello();
return Content(hello);
}
}
}

运行后访问Demo方法,即可看到效果。

最新文章

  1. DataGridView绑定源码下载
  2. MySQL常用语句
  3. 关于Windows 7启动后网络一直转的问题的一个解决方法
  4. C#基础之Attribute
  5. [ActionScript 3.0] AS3 绘制正二十面体(线条)
  6. 第三百二十八天 how can I 坚持
  7. 技术是容易学会的(Copy)
  8. Disqus – About Disqus
  9. java系列--I/O流
  10. JAVA中StringBuffer类常用方法
  11. centos7 Ruby环境变量配置
  12. 踩过的坑—iphone手机H5样式兼容总结
  13. [SPOJ 687]Repeats
  14. 理解JavaScript继承(一)
  15. 3DPrint ABS和PLA代码比较
  16. head first
  17. 日常捕获的野生知识 - javascript获取屏幕大小
  18. 51Nod 1013 3的幂的和 快速幂 | 乘法逆元 | 递归求和公式
  19. sql case when then else end sql_variant
  20. B6:命令模式 Command

热门文章

  1. OWINS是什么(转载)
  2. TCP/IP网络编程之优雅地断开套接字
  3. TCP报文格式,TCP的三次握手和四次挥手&amp;hosts文件
  4. 【Single Number】cpp
  5. 聊聊、SpringBoot 静态资源访问
  6. struts OGNL详解
  7. jquery判断元素是否存在在数组中
  8. MySQL Innodb表导致死锁日志情况分析与归纳
  9. POJ 2376:Cleaning Shifts(贪心)
  10. java简易DVD影片管理系统—面向对象