Autofac 从容器中获取对象

静态类或Service场景可以动态,可以直接动态获取对象

  1. /// <summary>
  2. /// 从容器中获取对象
  3. /// </summary>
  4. /// <typeparam name="T"></typeparam>
  5. public static T GetFromFac<T>()
  6. {
  7. return _container.Resolve<T>();
  8. }

使用方法:

Startup->ConfigureServices-> 加入代码 AutofacCore.InitContainer(container);

AutofacCore类:

  1. using Autofac;
  2. using Autofac.Extensions.DependencyInjection;
  3. using Microsoft.Extensions.Configuration;
  4. using Microsoft.Extensions.DependencyInjection;
  5. using System;
  6. using System.Collections.Generic;
  7. using System.IO;
  8. using System.Text;
  9. namespace CodeHelper
  10. {
  11. public static class AutofacCore
  12. {
  13. private static IContainer _container;
  14. public static void InitContainer(IContainer container)
  15. {
  16. _container = container;
  17. }
  18. public static IContainer InitAutofac(IServiceCollection services)
  19. {
  20. var builder = new ContainerBuilder();
  21. //注册数据库基础操作和工作单元
  22. //services.AddScoped(typeof(IRepository<>), typeof(Repository<>));
  23. //services.AddScoped(typeof(IUnitWork), typeof(UnitWork));
  24. //注册app层(废弃->不使用此方法,修改采用配置文件)
  25. //builder.RegisterAssemblyTypes(Assembly.GetExecutingAssembly());
  26. ////防止单元测试时已经注入
  27. //if (services.All(u => u.ServiceType != typeof(ICacheContext)))
  28. //{
  29. // services.AddScoped(typeof(ICacheContext), typeof(CacheContext));
  30. //}
  31. //if (services.All(u => u.ServiceType != typeof(IHttpContextAccessor)))
  32. //{
  33. // services.AddScoped(typeof(IHttpContextAccessor), typeof(HttpContextAccessor));
  34. //}
  35. //将配置添加到ConfigurationBuilder
  36. //var config = new ConfigurationBuilder().SetBasePath(Directory.GetCurrentDirectory());
  37. //config.AddJsonFile("autofac.json");
  38. //config.AddJsonFile来自Microsoft.Extensions.Configuration.Json
  39. //config.AddXmlFile来自Microsoft.Extensions.Configuration.Xml
  40. //用Autofac注册ConfigurationModule
  41. //var module = new ConfigurationModule(config.Build());
  42. //builder.RegisterModule(module);
  43. //builder.Populate(services);
  44. //_container = builder.Build();
  45. return _container;
  46. }
  47. /// <summary>
  48. /// 从容器中获取对象
  49. /// </summary>
  50. /// <typeparam name="T"></typeparam>
  51. public static T GetFromFac<T>()
  52. {
  53. return _container.Resolve<T>();
  54. }
  55. }
  56. }

代码调用:

  1. var Configuration = AutofacCore.GetFromFac<IConfiguration>();
  2. AppId = Configuration["AppSettings:AppId"];
  3. AppSecret = Configuration["AppSettings:AppSecret"];

Autofac 动态获取对象静态类获取对象的更多相关文章

  1. Asp.Net SignalR 使用记录 技术回炉重造-总纲 动态类型dynamic转换为特定类型T的方案 通过对象方法获取委托_C#反射获取委托_ .net core入门-跨域访问配置

    Asp.Net SignalR 使用记录   工作上遇到一个推送消息的功能的实现.本着面向百度编程的思想.网上百度了一大堆.主要的实现方式是原生的WebSocket,和SignalR,再次写一个关于A ...

  2. Spring动态获取已注入的对象的方法

    1.根据类获取对象 @Autowired ApplicationContext context; GenericMapper<T,String> dao=(GenericMapper< ...

  3. 【Python】[面性对象编程] 获取对象信息,实例属性和类属性

    获取对象信息1.使用isinstance()判断class类型2.dir() 返回一个对象的所有属性和方法3.如果试图获取不存在的对象会抛出异常[AttributeError]4.正确利用对象内置函数 ...

  4. Statement和PreparedStatement的特点 MySQL数据库分页 存取大对象 批处理 获取数据库主键值

    1 Statement和PreparedStatement的特点   a)对于创建和删除表或数据库,我们可以使用executeUpdate(),该方法返回0,表示未影向表中任何记录   b)对于创建和 ...

  5. JAVA反射机制_获取字节码文件对象

    是在运行状态中,对于任意一个类 (class文件),都能够知道这个类的所有属性和方法:对于任意一个对象,都能够调用它的任意一个方法和属性: 这种动态获取的信息以及动态调用对象的方法的功能称为java语 ...

  6. Spring中获取被代理的对象

    目录 Spring中获取被代理的对象 获取Spring被代理对象什么时候可能会用到? Spring中获取被代理的对象 Spring中获取被代理的对象 ### 获取Spring被代理对象的JAVA工具类 ...

  7. 在springMVC的controller中获取request,response对象的一个方法

    ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttr ...

  8. EChart系列:在echart3中使用百度地图扩展之后,如何获取到百度地图对象

    最近做项目想要在百度地图上叠加显示echart的散点图,然后根据地图的缩放等级和区域范围要显示不同的散点图,这中间折腾了好久.功能要求包括: (1)底图使用百度地图: (2)可以在地图上叠加显示ech ...

  9. 获取$(this)子节点对象的方法

    获取$(this)子节点对象的方法: 1.children()方法: children() 方法返回被选元素的所有直接子元素. 该方法只会向下一级对 DOM 树进行遍历. 2.find()方法: fi ...

随机推荐

  1. JS生成限定整数区间范围内的随机整数

    对于整数区间获取随机整数: m,n均为整数,且n>m. 获取[m,n)区间内的随机整数: 1 var aNumber = (n - m) * Math.random() + m; 2 var r ...

  2. [MIT6.006] 13. Breadth-First Search (BFS) 广度优先搜索

    一.图 在正式进入广度优先搜索的学习前,先了解下图: 图分为有向图和无向图,由点vertices和边edges构成.图有很多应用,例如:网页爬取,社交网络,网络传播,垃圾回收,模型检查,数学推断检查和 ...

  3. binary hacks读数笔记(od命令)

    Linux od命令用于输出文件内容. od指令会读取所给予的文件的内容,并将其内容以八进制字码呈现出来 -t<输出格式>或--format=<输出格式> 设置输出格式. 实例 ...

  4. delete和truncate/drop恢复数据的过程

    使用myflash工具恢复delete操作数据,myflash工具注意事项: 该工具注意事项 1.binlog格式必须为row,且binlog_row_image=full 2.仅支持5.6与5.7 ...

  5. linux文件cat/tac/more/less/head/tail/find/vimdiff

    ls查看目录文件里的文件: [root@localhost test]# ls a  aa  b  c -d选项查看目录文件自身信息: [root@localhost test]# ll -d drw ...

  6. ASP.NET Core管道详解[2]: HttpContext本质论

    ASP.NET Core请求处理管道由一个服务器和一组有序排列的中间件构成,所有中间件针对请求的处理都在通过HttpContext对象表示的上下文中进行.由于应用程序总是利用服务器来完成对请求的接收和 ...

  7. 【建议收藏】阿里P7总结的Spring注解笔记,把组件注册讲的明明白白

    环境搭建 注解的方式是通过配置类的方式来注入组件,注解注入要比XML注入的方式简单,注解注入也需要在前者的基础上,添加一个spring-context的包,也是实际开发中常用的方式. 准备所需Jar包 ...

  8. 手把手为大家演示fat32转ntfs操作过程,一看就会

    fat32和ntfs是两种我们较为常见的u盘或者硬盘格式.它们都有着各自的特点,但是相比之下,使用ntfs文件格式我们可以做出很多fat32不能实现的功能.在日常生活中,我们会面临到需要把fat32转 ...

  9. guitar pro系列教程(十二):如何设置Guitar Pro的不完全小节

    当我们新建一个GTP谱的时候,我们肯定是要用到节拍,是的,一个乐谱节拍设置的好不好,将直接影响你的乐谱效果好不好,设置节拍的步骤我们之前也有讨论过,今天主要跟大家讲的便是不完全小节. 不完全小节顾名思 ...

  10. H5系列之svg

    svg呢,跟canvas其实都是用来画图的,只不过svg画的图,是矢量图,矢量图有个特点是,放大缩小,不会失真,canvas呢,是逐像素进行渲染的. 也就是,他依赖分辨率,会根据分辨率来决定图形是否清 ...