zoukankan      html  css  js  c++  java
  • 5.自定义配置数据源与配置中心方案

    一、扩展步骤

    1.实现 IConfigurationProvider

        class MyConfigurationProvider : ConfigurationProvider
        {
    
            Timer timer;
    
            public MyConfigurationProvider() : base()
            {
                timer = new Timer();
                timer.Elapsed += Timer_Elapsed;
                timer.Interval = 3000;
                timer.Start();
            }
    
            private void Timer_Elapsed(object sender, ElapsedEventArgs e)
            {
                Load(true);
            }
    
            public override void Load()
            {
                //加载数据
                Load(false);
            }
    
            void Load(bool reload)
            {
                this.Data["lastTime"] = DateTime.Now.ToString();
                if (reload)
                {
                    base.OnReload();
                }
            }
        }
     
    2.实现 IConfigurationSource
        class MyConfigurationSource : IConfigurationSource
        {
            public IConfigurationProvider Build(IConfigurationBuilder builder)
            {
                return new MyConfigurationProvider();
            }
        }
     
    3.实现 AddXXX 扩展方法
        public static class MyConfigurationBuilderExtensions
        {
            public static IConfigurationBuilder AddMyConfiguration(this IConfigurationBuilder builder)
            {
                builder.Add(new MyConfigurationSource());
                return builder;
            }
        }

    4.使用

            static void Main(string[] args)
            {
                var builder = new ConfigurationBuilder();
                builder.AddMyConfiguration();
                var configRoot = builder.Build();
    
                ChangeToken.OnChange(() => configRoot.GetReloadToken(), () =>
                {
                    Console.WriteLine($"lastTime:{configRoot["lastTime"]}");
                });
                Console.ReadKey();
            }
  • 相关阅读:
    36、基于TCP、UDP协议的嵌套字通信
    34、异常以及网络编程
    作业4月15号
    31、反射与内置方法、元类
    30、多态与鸭子类型以及内置函数
    作业4月9号
    29、继承
    作业4月8号
    28、封装
    27、面向对象
  • 原文地址:https://www.cnblogs.com/Adoni/p/12652535.html
Copyright © 2011-2022 走看看