Autofac 使用JSON文件配置

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

需要用到以下程序集。可以通过nugget分别安装

Microsoft.Extensions.Configuration.dll

Microsoft.Extensions.Configuration.Json

 Autofac.Configuration.dll


注意,项目目标框架最好设置为.NET Framework 4.6.1及以上。因为Microsoft.Extensions.Configuration.dll,依赖.NETStandard2.0 

 下表列出了 .NET Standard 的所有版本及其支持的平台


AutofacExt帮助类

using Autofac;using Autofac.Configuration;using Microsoft.Extensions.Configuration;namespace autofacConsole

{

    publicstaticclass AutofacExt

    {

        privatestatic IContainer _container;

        publicstaticvoid InitAutofac()

        {

            // Add the configuration to the ConfigurationBuilder.varconfig =new ConfigurationBuilder();

            config.AddJsonFile("autofac.json");

            // Register the ConfigurationModule with Autofac.varmodule =new ConfigurationModule(config.Build());

            varbuilder =new ContainerBuilder();

            builder.RegisterModule(module);

            // Set the dependency resolver to be Autofac._container = builder.Build();

        }

        ///<summary>/// 从容器中获取对象

        ///</summary>///<typeparam name="T"></typeparam>publicstaticT GetFromFac()

        {

            return_container.Resolve();

            //  return (T)DependencyResolver.Current.GetService(typeof(T));        }

        publicstaticT GetFromFac(string name)

        {

            return_container.ResolveNamed(name);

        }

    }

}

 客户端调用

publicinterface IOutput

    {

        voidWrite(stringcontent);    }

publicclass ConsoleOutput : IOutput

    {

        publicvoidWrite(string content)

        {

            Console.WriteLine(content);

        }

    }class Program

    {       

        staticvoidMain(string[] args)

        {

          AutofacExt.InitAutofac();

            varwriter =AutofacExt.GetFromFac();

            writer.WriteDate();

            Console.ReadKey();

        }

    }   


 json配置文件配置

Autofac.json 

{

  "defaultAssembly": "autofacConsole",

  "components": [

    {

      "type": "autofacConsole.ConsoleOutput, autofacConsole",

      "services": [

        {

          "type": "autofacConsole.IOutput,autofacConsole"        }

      ],

      "instanceScope": "single-instance",

      "injectProperties":true    }

  ]

}

设置为如果较新则复制

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • NAME dnsmasq - A lightweight DHCP and caching DNS server....
    ximitc阅读 2,938评论 0 0
  • =========================================================...
    _灯火阑珊处阅读 2,477评论 0 3
  • pyspark.sql模块 模块上下文 Spark SQL和DataFrames的重要类: pyspark.sql...
    mpro阅读 9,538评论 0 13
  • "use strict";function _classCallCheck(e,t){if(!(e instanc...
    久些阅读 2,061评论 0 2
  • rljs by sennchi Timeline of History Part One The Cognitiv...
    sennchi阅读 7,486评论 0 10