首页 > 其他 > 详细

7.选项数据的热更新

时间:2020-04-07 17:44:52      阅读:73      评论:0      收藏:0      [点我收藏+]

一、关键类型

IOptionsMonitor<out TOptions>     //服务注册services.AddSingleton时使用
IOptionsSnapshot<out TOptions>  //服务注册services.AddScoped 时使用
 
二、IOptionsSnapshot 方式
 1.接口定义
    public interface IOrderService
    {
        int ShowMaxOrderCount();
    }

2.接口实现

    public class OrderService : IOrderService
    {
        IOptionsSnapshot<OrderServiceOptions> _options;
        public OrderService(IOptionsSnapshot<OrderServiceOptions> options)
        {
            _options = options;
        }
        public int ShowMaxOrderCount()
        {
            return _options.Value.MaxOrderCount;
        }
    }

    public class OrderServiceOptions
    {
        public int MaxOrderCount { get; set; } = 100;
    }

3.服务注册

services.Configure<OrderServiceOptions>(Configuration.GetSection("OrderService")); //从配置文件中获取配置信息,也可以从其它方式获取配置信息
services.AddScoped<IOrderService, OrderService>();
三、IOptionsMonitor 方式
 1.接口定义
    public interface IOrderService
    {
        int ShowMaxOrderCount();
    }

2.接口实现

public class OrderService : IOrderService
    {
        IOptionsMonitor<OrderServiceOptions> _options;
        public OrderService(IOptionsMonitor<OrderServiceOptions> options)
        {
            _options = options;

            //每次配置信息变更的回调
            _options.OnChange(option =>
            {
                Console.WriteLine($"配置更新了,最新的值是:{_options.CurrentValue.MaxOrderCount}");
            });
        }

        public int ShowMaxOrderCount()
        {
            return _options.CurrentValue.MaxOrderCount;
        }
    }

    public class OrderServiceOptions
    {
    public int MaxOrderCount { get; set; } = 100; }

3.服务注册

services.Configure<OrderServiceOptions>(Configuration.GetSection("OrderService")); //从配置文件中获取配置信息,也可以从其它方式获取配置信息
services.AddSingleton<IOrderService, OrderService>();

 

四、对以加载的配置信息后进行内存修改

services.PostConfigure<OrderServiceOptions>(options =>
{
  options.MaxOrderCount += 20;
});

 

 

7.选项数据的热更新

原文:https://www.cnblogs.com/Adoni/p/12653057.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!