zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    思考:学习redis的数据结构应该从三个维度来学习?
    思考:一个程序员老说不会碰到或者用到复杂的数据结构或者算法,是这样吗?
    思考:软件系统设计的(前期)权衡?
    思考:一个推荐引擎工程师的能力覆盖
    思考:关于服务架构的取舍:
    模拟斗地主真人在线发牌
    java反射机制
    C-练习题
    java-线程的生命周期
    生产者和消费者模型
  • 原文地址:https://www.cnblogs.com/xinyf/p/9842205.html
Copyright © 2011-2022 走看看