最近使用Autofac框架做项目的依赖注入,感觉挺好用的。

没有深入研究,只是拿来用用,具体可以去官网看看:https://autofac.org/。

这里只是贴一下最近项目的配置:

  1. public partial class Startup
  2. {
  3. public void ConfigureContainer(IAppBuilder app)
  4. {
  5. var builder = new ContainerBuilder();
  6.  
  7. // You can register controllers all at once using assembly scanning...
  8. builder.RegisterControllers(typeof(MvcApplication).Assembly);
  9.  
  10. // Get your HttpConfiguration.
  11. var config = GlobalConfiguration.Configuration;
  12.  
  13. // Register your Web API controllers.
  14. builder.RegisterApiControllers(Assembly.GetExecutingAssembly());
  15.  
  16. // OPTIONAL: Register the Autofac filter provider.
  17. builder.RegisterWebApiFilterProvider(config);
  18.  
  19. // OPTIONAL: Register the Autofac model binder provider.
  20. builder.RegisterWebApiModelBinderProvider();
  21.  
  22. // ...or you can register individual controlllers manually.
  23. //builder.RegisterType<HomeController>().InstancePerRequest();
  24.  
  25. builder.RegisterModule<AutofacWebTypesModule>();//Register Web Abstractions
  26.  
  27. builder.RegisterSource(new ViewRegistrationSource());//Enable Property Injection for View Pages
  28.  
  29. builder.RegisterFilterProvider();//Enable Property Injection for Action Filters
  30.  
  31. builder.RegisterType<EFDbContext>().As<IDbContext>().InstancePerRequest();
  32. builder.RegisterGeneric(typeof(Repository<>)).As(typeof(IRepository<>)).InstancePerLifetimeScope();
  33. builder.RegisterType<MemoryCacheManager>().As<ICacheManager>().InstancePerRequest();
  34. #region Service
  35. builder.RegisterType<SysUserService>().As<ISysUserService>().InstancePerLifetimeScope();
  36. //注册各种服务
  37.  
  38. #endregion
  39. var container = builder.Build();
  40. DependencyResolver.SetResolver(new AutofacDependencyResolver(container));
  41.  
  42. config.DependencyResolver = new AutofacWebApiDependencyResolver(container);
  43.  
  44. RuntimeContext.Instance.ContainerManager = new ContainerManager(container);//存储到全局实例中
  45. // OWIN MVC SETUP:
  46.  
  47. // Register the Autofac middleware FIRST, then the Autofac MVC middleware.
  48. app.UseAutofacMiddleware(container);
  49. app.UseAutofacMvc();
  50. }
  51. }

项目是基于MVC的,利用Startup的partialt特性,加了上面依赖注入配置方法ConfigureContainer,然后可以在MVC的Startup类的Configuration方法中调用该方法,如下:

  1. public void Configuration(IAppBuilder app)
  2. {
  3. ConfigureContainer(app);
  4. }

OK,依赖注入搞定了.

Autofac依赖注入框架的更多相关文章

  1. .net mvc web api Autofac依赖注入框架-戈多编程

    今天自己搭了一套基于三层的依赖注入mvc web api 的依赖注入框架,在此总结下相关配置 1.设置应用程序的.net Framework版本为 4.5 2.通过Nuget 安装autofac包 I ...

  2. Autofac 依赖注入框架 使用

    简介 Autofac是一款IOC框架,比较于其他的IOC框架,如Spring.NET,Unity,Castle等等所包含的,它很轻量级性能上非常高. 官方网站http://autofac.org/ 源 ...

  3. Autofac依赖注入框架使用

    简介: Autofac是一款IOC框架,比较于其他的IOC框架,如Spring.NET,Unity,Castle等等所包含的,它很轻量级性能上非常高 控制反转和依赖注入: 控制反转 IOC(Inver ...

  4. 从零开始,搭建博客系统MVC5+EF6搭建框架(2),测试添加数据、集成Autofac依赖注入

    一.测试仓储层.业务层是否能实现对数据库表的操作 1.创建IsysUserInfoRepository接口来继承IBaseRepository父接口 namespace Wchl.WMBlog.IRe ...

  5. .NET Core 中依赖注入框架详解 Autofac

    本文将通过演示一个Console应用程序和一个ASP.NET Core Web应用程序来说明依赖注入框架Autofac是如何使用的 Autofac相比.NET Core原生的注入方式提供了强大的功能, ...

  6. 【干货】利用MVC5+EF6搭建博客系统(二)测试添加数据、集成Autofac依赖注入

    PS:如果图片模糊,鼠标右击复制图片网址,然后在浏览器中打开即可. 一.测试仓储层.业务层是否能实现对数据库表的操作 1.在52MVCBlog.IRepository程序集下创建IsysUserInf ...

  7. .net core程序中使用微软的依赖注入框架

    我之前在博文中介绍过Asp.net core下系统自带的依赖注入框架,这个依赖框架在Microsoft.Extensions.DependencyInjection中实现,本身并不是.net core ...

  8. ADO.NET .net core2.0添加json文件并转化成类注入控制器使用 简单了解 iTextSharp实现HTML to PDF ASP.NET MVC 中 Autofac依赖注入DI 控制反转IOC 了解一下 C# AutoMapper 了解一下

    ADO.NET   一.ADO.NET概要 ADO.NET是.NET框架中的重要组件,主要用于完成C#应用程序访问数据库 二.ADO.NET的组成 ①System.Data  → DataTable, ...

  9. ASP.NET中IOC容器Autofac(依赖注入DI 控制反转IOC)

    IOC的一个重点是在程序运行中,动态的向某个对象提供它所需要的其他对象.这一点是通过DI来实现的.Autofac则是比较流行的一款IOC容器. IoC和DI有什么关系呢?其实它们是同一个概念的不同角度 ...

随机推荐

  1. 微软柯塔娜(Cortana)的一句名言

    近日.媒体频传Win 10装机量已经超过多少千万台.我操心的问题是,集成在Win 10操作系统中的柯塔娜小姐将怎样面对各色各样的人群.由于,在这个世界上.人是最复杂的生物,什么人都有. 依据国外媒体报 ...

  2. 第十五章,读取txt文件(C++)

    #include <iostream> #include <fstream> int main(int argc, char** argv) { std::ifstream i ...

  3. nyoj--214--单调递增子序列(二)(二分查找+LIS)

    单调递增子序列(二) 时间限制:1000 ms  |  内存限制:65535 KB 难度:4 描述 给定一整型数列{a1,a2...,an}(0<n<=100000),找出单调递增最长子序 ...

  4. VS 2015 C#不能进入断点

    工程\属性\生成页面,去掉优化代码勾选.

  5. MySQL日期数据类型和时间类型使用总结

    转自: http://blog.chinaunix.net/space.php?uid=11327712&do=blog&id=32416 MySQL 日期类型:日期格式.所占存储空间 ...

  6. 解决win8.1下sql配置iis的问题

    在配置iis8.5时,ISAPI和CGI限制中没有ASP.NET v4.0.30319, 所以要注册.net 4.0 注册方法为在“运行”中输入cmd,然后在命令行中输入: C:\WINDOWS\Mi ...

  7. Mybatis中<resultMap>用法(主要用于一对多去重)

    一.创建部门表和员工表: 创建部门信息表`t_department`,其中包括`id`, `name` CREATE TABLE t_department (         id INT AUTO_ ...

  8. WordPress 增加 keywords 和 description

    WordPress 增加 keywords 和 description . <?php $keywords = '798资源网'; $description = '798资源网'; //文章页 ...

  9. perl脚本去除文件中重复数据

    今天第一天写博客,写的不好请大家多多指教,废话不多说了,干货送上: ############################################################# #!/u ...

  10. redis 篇 - 键 and string

    redis 进入控制台 redis-cil 需要输入密码的时候可以是用 -a redis-cil -a abcd1234 redis 数据类型 string hash list set zset( 有 ...