zoukankan      html  css  js  c++  java
  • 6.使用选项框架解耦服务与配置

    一、特性

    支持单例模式读取配置
    支持快照
    支持配置变更通知
    支持运行时动态修改选项值
     
    二、设计原则
    接口分离原则 (ISP) ,我们的类不应该依赖它不使用的配置
    关注点分离 (SoC),不同组件、服务、类之间的配置不应相互依赖或耦合
     
    三、建议
    为我们的服务设计 XXXOptions
    使用 IOptions<XXXOptions> 、 IOptionsSnapshot <XXXOptions> 、
    IOptionsMonitor <XXXOptions> 作为服务构造函数的参数
     
    四、代码
    1.定义接口
        public interface IOrderService
        {
            int ShowMaxOrderCount();
        }

    2.实现接口

        public class OrderServiceOptions
        {
        public int MaxOrderCount { get; set; } = 100;
        }
        public class OrderService : IOrderService
        {
            IOptions<OrderServiceOptions> _options;  //以Options的方式传入配置
            public OrderService(IOptions<OrderServiceOptions> options)
            {
                _options = options;
            }
    
            public int ShowMaxOrderCount()
            {
                return _options.Value.MaxOrderCount;
            }
        }

    3.服务注册

    services.Configure<OrderServiceOptions>(Configuration.GetSection("OrderService")); //从配置文件中获取配置信息,也可以从其它方式获取配置信息
    services.AddSingleton<IOrderService, OrderService>();
     
  • 相关阅读:
    $.ajax
    es6--之箭头函数
    vuex相关知识点
    grunt---grunt_test 测试用例
    git2--常用命令
    git命令
    百万程序员的苦恼-选择VB.NET还是C#
    在Linux上运行C#
    C#中的cookie编程
    C#编程让Outlook乖乖交出帐户密码
  • 原文地址:https://www.cnblogs.com/Adoni/p/12652941.html
Copyright © 2011-2022 走看看