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
{
    public static class AutofacExt
    {
        private static IContainer _container;

        public static void InitAutofac()
        {

            // Add the configuration to the ConfigurationBuilder.
            var config = new ConfigurationBuilder();
            config.AddJsonFile("autofac.json");

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


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

        }

        /// <summary>
        /// 從容器中獲取對象
        /// </summary>
        /// <typeparam name="T"></typeparam>
        public static T GetFromFac<T>()
        {
            return _container.Resolve<T>();
            //   return (T)DependencyResolver.Current.GetService(typeof(T));
        }

        public static T GetFromFac<T>(string name)
        {
            return _container.ResolveNamed<T>(name);
        }
    }
}

 客戶端調用

public interface IOutput
    {
        void Write(string content);
    }
public class ConsoleOutput : IOutput { public void Write(string content) { Console.WriteLine(content); } } class Program { static void Main(string[] args) { AutofacExt.InitAutofac(); var writer =AutofacExt.GetFromFac<IOutput>(); writer.WriteDate(); Console.ReadKey(); } }

 

 json配置文件配置

Autofac.json 

{
  "defaultAssembly": "autofacConsole",
  "components": [
    {
      "type": "autofacConsole.ConsoleOutput, autofacConsole",
      "services": [
        {
          "type": "autofacConsole.IOutput,autofacConsole"
        }
      ],
      "instanceScope": "single-instance",
      "injectProperties": true
    }
  ]
}

設置為如果較新則復制

 

參考資料:

https://github.com/autofac/Autofac

https://autofac.readthedocs.io/en/latest/getting-started/index.html

https://autofac.readthedocs.io/en/latest/configuration/xml.html

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM