zoukankan      html  css  js  c++  java
  • Autofac通过配置的方式

    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

  • 相关阅读:
    Gartner:当商业智能成熟度低时,如何加快分析采用率
    年薪50万的大数据分析师养成记
    数据化管理在餐饮业中的应用
    linux下查看本机socket端口详细信息
    nginx模块编程之获取客户ip及端口号
    大小端模式转换函数
    Nginx代码调试——gdb工具
    Nginx入门之两种handler函数的挂载方式
    Nginx重要结构request_t解析之http请求的获取
    Nginx_handler模块发开(hello模块结构解析)
  • 原文地址:https://www.cnblogs.com/sylone/p/6094317.html
Copyright © 2011-2022 走看看