ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Autofac支持配置文件

2022-05-17 23:34:02  阅读:183  来源: 互联网

标签:Autofac 配置文件 Demo 支持 Api Yak Services


Autofac支持配置文件

前面一节介绍了Autofac注入方式,这节介绍Autofac支持配置文件。

环境

Win10+VS2020+.NET 5.0 +Autofac 6.3.0

 

介绍

autofac是比较简单易用的IOC容器。下面我们展示如何通过json配置文件,来进行控制反转。

步骤:

  1. Nuget引入程序集:

l Autofac.Extensions.DependencyInjection

l Autofac.Configuration

l Autofac

2.准备配置文件

3.读取配置文件,根据配置文件信息,生成抽象和映射信息

 

 

实践

项目结构

在上节Autofac的注入方式的项目上改造。

 

 

 

引入程序集

<ItemGroup>

    <PackageReference Include="Autofac" Version="6.3.0" />

    <PackageReference Include="Autofac.Configuration" Version="6.0.0" />

    <PackageReference Include="Autofac.Extensions.DependencyInjection" Version="7.1.0" />

  </ItemGroup>

 

 

准备配置文件

在根目录下添加名称为“autofac”的Json文件,设置为“始终复制”。

 

 

 

代码如下:

{

"components": [

{

"type": "Yak.Autofac.Api.Demo.Services.TestServiceA,Yak.Autofac.Api.Demo",

"services": [

{

"type": "Yak.Autofac.Api.Demo.Services.Interface.ITestServiceA,Yak.Autofac.Api.Demo"

}

],

"instanceScope": "single-instance", //生命周期

"injectProperties": true // 属性注入

}

,

{

"type": "Yak.Autofac.Api.Demo.Services.TestServiceB,Yak.Autofac.Api.Demo",

"services": [

{

"type": "Yak.Autofac.Api.Demo.Services.Interface.ITestServiceB,Yak.Autofac.Api.Demo"

}

],

"instanceScope": "single-instance", //生命周期

"injectProperties": true // 属性注入

},

{

"type": "Yak.Autofac.Api.Demo.Services.TestServiceC,Yak.Autofac.Api.Demo",

"services": [

{

"type": "Yak.Autofac.Api.Demo.Services.Interface.ITestServiceC,Yak.Autofac.Api.Demo"

}

],

"instanceScope": "single-instance", //生命周期

"injectProperties": true // 属性注入

},

{

"type": "Yak.Autofac.Api.Demo.Services.TestServiceD,Yak.Autofac.Api.Demo",

"services": [

{

"type": "Yak.Autofac.Api.Demo.Services.Interface.ITestServiceD,Yak.Autofac.Api.Demo"

}

],

"instanceScope": "single-instance", //生命周期

"injectProperties": true // 属性注入

}

]

}

 

 

 

 

生成抽象和映射信息

修改Startup中ConfigureServices方法,读取配置文件,根据配置文件信息,生成抽象和映射信息,代码如下

ContainerBuilder containerBuilder = new ContainerBuilder();

                {

                    //读取配置文件,把配置关系装载到ContainerBuilder

                    IConfigurationBuilder config = new ConfigurationBuilder();

                    IConfigurationSource autofacJsonConfigSource = new JsonConfigurationSource()

                    {

                        Path = "autofac.json",

                        Optional = false,//boolean,默认就是false,可不写

                        ReloadOnChange = true,//同上

                    };

                    config.Add(autofacJsonConfigSource);

                    ConfigurationModule module = new ConfigurationModule(config.Build());

                    containerBuilder.RegisterModule(module);

                }

                IContainer container = containerBuilder.Build();

                ITestServiceD testServiceD = container.Resolve<ITestServiceD>();

                testServiceD.Show();

 

运行

运行程序:

 

 

 

 

支持配置文件优势

支持配置文件有什么好处呢?再添加一个类TestServiceUpdate ,代码如下:

 public class TestServiceUpdate : ITestServiceA

    {

        public TestServiceUpdate()

        {

            Console.WriteLine($"{this.GetType().Name} 被构造了...");

        }

 

        public void Show()

        {

            Console.WriteLine($"This is a {this.GetType().Name} Instance...");

        }

    }

 

把配置文件中TestServiceUpdate修改为TestServiceUpdate 。

 

 

 

运行结果:

 

 

 

 

 

发现不用修改代码只要配置就可以实现类的调换了,是不是很方便。

 

 

总结

Autofac支持配置文件太强大了,不用修改代码只要配置就可以实现类的调换了。

标签:Autofac,配置文件,Demo,支持,Api,Yak,Services
来源: https://www.cnblogs.com/yakniu/p/16282880.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有