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();
            }
  • 相关阅读:
    Oracle exp/imp导出导入命令及数据库备份 (转载)
    多表初始化
    调用别的窗体
    修复k8s内存泄露问题
    如何高效的学习(转)
    Ansible11:变量详解【转】
    沟通的方式方法
    shell中的循环及条件判断
    Tomcat参数优化
    将DataReader转化为DataTables的一个简单实现
  • 原文地址:https://www.cnblogs.com/Adoni/p/12652535.html
Copyright © 2011-2022 走看看