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();

        }

        ///

/// 从容器中获取对象

        ///

///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    }

  ]

}

设置为如果较新则复制

你可能感兴趣的:(Autofac 使用JSON文件配置)