autofac v4.0+通过配置文件的方式注册组件

最近在看李玉宝 / OpenAuth.Net的项目代码,新手表示看不懂.所以,不管三七二十一,模仿是最好的学习,于是我决定自己创建一个项目,把人家的代码一点一点拷贝过来,细细品味.

在研究的过程中,我发现大神用autofac是通过配置文件的方式.Autofac.Configuration的版本是V3.3,然后我创建的项目用的是V4.0.1. 本来是想用代码注册组件的,但是以看到大神是通过配置文件注册的,于是乎,不管三七二十一,我就定下了一个小目标,我要用v4.0.1版本来完成使用配置文件的方式来注册组件.

废话不多说官网的文档在http://autofac.readthedocs.io/en/latest/configuration/xml.html#configuring-with-microsoft-configuration-4-0

里面有一段Demo,如下图

但是当你把代码拷贝到项目时会发现AddJsonFile方法是报错的,如下图

解决思路:我要怎么样才能完成config.AddJsonFile这个方法呢.

在度娘后发现基本所有的网页都是用AddJsonFile这个方法

原因是Microsoft.Extensions.Configuration这个dll有3个版本

最后实在是无奈的我,下载了Microsoft.Extensions.Configuration组件的源码, 下载地址:https://codeload.github.com/aspnet/Configuration/zip/dev

在研究后发现IConfigurationSource的实现类(全是抽象类)有

MemoryConfigurationSource
CommandLineConfigurationSource
EnvironmentVariablesConfigurationSource
FileConfigurationSource 
AzureKeyVaultConfigurationSource

根据上面的AddJsonFile方法,我猜我需要的FileConfigurationSource,然后我又去找该方法类的实现类,发现了大致

IniConfigurationSource
JsonConfigurationSource
XmlConfigurationSource

同理,根据AddJsonFile方法,我猜测,我需要的是JsonConfigurationSource类.

有了上述的猜测,我就可以开始动手了.

在vs的项目的引用中右键,找到nuget,搜索JsonConfigurationProvider,然后安装

接着,又是AddJsonFile这句话,我选择了用json的方式,而不是xml来配置,配置文件内容最后附上.

最后,附上主要代码(我是asp.net mvc项目)

//1. Create a ContainerBuilder.
var builder = new ContainerBuilder();
IConfigurationBuilder config = new ConfigurationBuilder();

IConfigurationSource autofacJsonConfigSource = new JsonConfigurationSource()
{
Path = "/config/autofac.json",
Optional = false,//boolean,默认就是false,可不写
ReloadOnChange = false,//同上
};

config.Add(autofacJsonConfigSource);

// Register the ConfigurationModule with Autofac.
var module = new ConfigurationModule(config.Build());
builder.RegisterModule(module);

// Register your MVC controllers.
builder.RegisterControllers(typeof(MvcApplication).Assembly);

//3.Build the container and store it for later use.
var container = builder.Build();

//4.实现DI(DependencyResolver方式)
DependencyResolver.SetResolver(new AutofacDependencyResolver(container));

最后,关于配置文件的参数说明,链接:https://github.com/autofac/Documentation/blob/master/docs/configuration/xml.rst

附:我的autofac.json文件内容

时间: 2024-10-24 23:24:40

autofac v4.0+通过配置文件的方式注册组件的相关文章

Ioc容器Autofac系列(3)-- 三种注册组件的方式

简单来说,所谓注册组件,就是注册类并映射为接口,然后根据接口获取对应类,Autofac将被注册的类称为组件. 虽然可像上篇提到的一次性注册程序集中所有类,但AutoFac使用最多的还是单个注册.这种注册共有三种方式,其中最简单的就是用As方法,例如,ArrayList继承了IEnumerable接口,若将其注册到Autofac中,写法如下所示: 双击代码全选 1 2 3 4 5 ContainerBuilder builder = new ContainerBuilder();         

Autofac怎样注册组件(Registering Components)

在上篇Autofac基本使用步骤中,我们知道Autofac通过创建一个ContainerBuilder对象来注册组件,这个builder是通过服务来暴露组件,后续我们只需要知道服务即可,得到具体组件实例. 在Autofac中的术语请点击此链接查看==>术语 什么是组件(components)? 分三类: 1. reflection(.NET 类型, 或者泛型) 2.现成的实例.(我们创建的类型的实例) 3.Lambda表达式(执行对象实例化的匿名函数) Auotfac 为ContainerBui

天正建筑t20 v4.0一键破解补丁|天正建筑t20 v4.0注册机下载

天正建筑t20 v4.0一键破解补丁点击下载天正建筑T20破解补丁使用说明1.启动工具2.点击一键破解3.手动指定目录,可以破解AutoCAD软件点击查看原图4.破解之后变成单机版,可前往 帮助演示>>版本信息 查看点击查看原图天正建筑T20软件特色1.t20天正暖通v4.0破解版提供了新的通风系统设计2.支持在软件上建立一个新的系统名称3.支持在一个风管系统上建立多个子项目4.支持添加通风系统.添加排风系统.添加回风系统5.每一个系统都是可以建立颜色的6.可以让您在添加系统的时候知道不同项目

java web学习总结(二十一) -------------------模拟Servlet3.0使用注解的方式配置Servlet

一.Servlet的传统配置方式 在JavaWeb开发中, 每次编写一个Servlet都需要在web.xml文件中进行配置,如下所示: 1 <servlet> 2 <servlet-name>ActionServlet</servlet-name> 3 <servlet-class>me.gacl.web.controller.ActionServlet</servlet-class> 4 </servlet> 5 6 <ser

JavaWeb学习总结(四十八)——模拟Servlet3.0使用注解的方式配置Servlet

JavaWeb学习总结(四十八)——模拟Servlet3.0使用注解的方式配置Servlet 一.Servlet的传统配置方式 在JavaWeb开发中, 每次编写一个Servlet都需要在web.xml文件中进行配置,如下所示: 1 <servlet> 2 <servlet-name>ActionServlet</servlet-name> 3 <servlet-class>me.gacl.web.controller.ActionServlet</s

iis7 发布mvc3 遇到的HTTP错误 403.14-Forbidden Web 服务器被配置为不列出此目录的内容及Login on failed for &quot;IIS APPPOOL\ASP.NET v4.0&quot;问题

问题1: 发布mvc3报错:403.14-Forbidden Web 服务器被配置为不列出此目录的内容 折腾了半天,提示里面的解决方法是: 如果不希望启用目录浏览,请确保配置了默认文档并且该文件存在. 使用 IIS 管理器启用目录浏览. 打开 IIS 管理器. 在“功能”视图中,双击“目录浏览”. 在“目录浏览”页上,在“操作”窗格中单击“启用”. 确认站点或应用程序配置文件中的 configuration/system.webServer/[email protected] 特性被设置为 Tr

ISAPI和CGI限制中没有ASP.NET v4.0 ; vS2013检测到在集成的托管管道模式下不适用的 ASP.NET 设置。

统确实自带了ASP.NET v4.0,但是ISAPI中没有这个选项,导致服务器开不起来 解决方法如下: 1.确保安装IIS时确实安装了ASP.NET,如果没有的话,勾上重新装一下,一般出现404.2时这么干 2.如果你是先装了IIS然后才装了.NET,那就需要把.NET再注册一下,一般出现404.17时这么干 命令是:C:\WINDOWS\Microsoft.NET\Framework\v4.0.30319\aspnet_regiis.exe -i 重启IIS就可以看到了       S2013

A博娱乐强势来袭v4.0.7 更新内容

A博娱乐强势来袭屈原是一个符号 总代:企鹅8033320 NutzWk 是基于Nutz的开源企业级开发框架. v4.0.7 更新内容 update: 大部分控制类登录权限验证改为权限标识符,防止越权访问: add: 支持微信支付相关所有接口功能,并添加DEMO: ps:微信支付及给个人发红包.给个人发现金的DEMO,在WxPayTestController类(微信配置--帐号配置--修改),微信支付成功的回调DEMO在 WxPayBackController. v4.0.6 更新内容 add:

从零開始制作H5应用(4)——V4.0,增加文字并给文字加特效

之前,我们分三次完毕了我们第一个H5应用的三个迭代版本号: V1.0--简单页面滑动切换 V2.0--多页切换,透明过渡及交互指示 V3.0--加入loading,music及自己主动切换 这已经是一个具有基本表达能力的版本号了.可是,远远不够!由于,用户体验永远是第一位的,单纯的图片无法准确调动用户情绪,当然,除非是那些特别牛逼的照片,但那时不可多得的,所以我们必须配以适当的文案来对图片内容进行说明或者升华.而且,假设文字也有一些简单的特效而动起来,它们会更有生命力! 任务 在V3.0版的基础