当前位置: 首页 > news >正文

建筑公司网站的目标用户深圳燃气公司电话号码

建筑公司网站的目标用户,深圳燃气公司电话号码,企业网站改版新闻,免费域名申请网站大全下载前面我们讲到 IOptions 和 IOptionsSnapshot#xff0c;他们两个最大的区别便是前者注册的是单例模式#xff0c;后者注册的是 Scope 模式。而 IOptionsMonitor 则要求配置源必须是可监听的#xff0c;用来实现 Options 实例的自动更新#xff0c;并对外提供了 OnChage 事件…前面我们讲到 IOptions 和 IOptionsSnapshot他们两个最大的区别便是前者注册的是单例模式后者注册的是 Scope 模式。而 IOptionsMonitor 则要求配置源必须是可监听的用来实现 Options 实例的自动更新并对外提供了 OnChage 事件给我们更多的控制权。 IOptionsMonitor public interface IOptionsMonitorout TOptions {TOptions CurrentValue { get; }      TOptions Get(string name);      IDisposable OnChange(ActionTOptions listener); } IOptionsMonitor 与 IOptionsSnapshot 类似都提供了根据指定名称获取 Options 的功能并多了一个 OnChange 方法。而它的默认实现者是 OptionsMonitor。 public static IServiceCollection AddOptions(this IServiceCollection services){...services.TryAdd(ServiceDescriptor.Singleton(typeof(IOptions), typeof(OptionsManager)));services.TryAdd(ServiceDescriptor.Scoped(typeof(IOptionsSnapshot), typeof(OptionsManager)));services.TryAdd(ServiceDescriptor.Singleton(typeof(IOptionsMonitor), typeof(OptionsMonitor)));... } OptionsMonitor public class OptionsMonitorTOptions : IOptionsMonitorTOptions where TOptions : class, new() {        private readonly IOptionsMonitorCacheTOptions _cache;        private readonly IOptionsFactoryTOptions _factory;        private readonly IEnumerableIOptionsChangeTokenSourceTOptions _sources;        internal event ActionTOptions _onChange;      public OptionsMonitor(IOptionsFactoryTOptions factory, IEnumerableIOptionsChangeTokenSourceTOptions sources, IOptionsMonitorCacheTOptions cache)    {_factory factory;_sources sources;_cache cache;             foreach (var source in _sources){ChangeToken.OnChange(() source.GetChangeToken(),() InvokeChanged());}}                  public TOptions CurrentValue { get Get(Options.DefaultName); }           public virtual TOptions Get(string name) _cache.GetOrAdd(name, () _factory.Create(name));           private void InvokeChanged()    {...}             public IDisposable OnChange(ActionTOptions listener)    {...} } 首先看构造函数中的三个参数其中 IOptionsFactory 和 IOptionsMonitorCache 在上一章已讲过而第二个 IOptionsChangeTokenSource 则是用来实现对配置源的监听 public interface IOptionsChangeTokenSourceout TOptions {         IChangeToken GetChangeToken();       string Name { get; } } 通过 GetChangeToken 获取 ChangeToken , 从而注册其 InvokeChanged 方法 private void InvokeChanged(){ _cache.TryRemove(Options.DefaultName);    var options CurrentValue;     if (_onChange ! null){_onChange.Invoke(options);} } 首先移除 Options 缓存再通过 IOptionsFactory 重新创建 Options然后调用 _onChange 事件。 而 OnChange 方法则用来注册 _onChange 事件 public IDisposable OnChange(ActionTOptions listener){    var disposable new ChangeTrackerDisposable(this, listener);_onChange disposable.OnChange;       return disposable; } 这里又使用了一个 OptionsMonitore 的包装类用来实现事件的注销 internal class ChangeTrackerDisposable : IDisposable{    private readonly ActionTOptions _listener;      private readonly OptionsMonitorTOptions _monitor;     public ChangeTrackerDisposable(OptionsMonitorTOptions monitor, ActionTOptions listener)    {_listener listener;_monitor monitor;}        public void OnChange(TOptions options) _listener.Invoke(options);            public void Dispose() _monitor._onChange - OnChange; } 再去看一下 IConfigurationChangeTokenSource 的实现 ConfigurationChangeTokenSource IConfigurationChangeTokenSource 的默认实现类便是 ConfigurationChangeTokenSource : public static IServiceCollection ConfigureTOptions(this IServiceCollection services, string name, IConfiguration config)    where TOptions : class{...services.AddSingletonIOptionsChangeTokenSourceTOptions(new ConfigurationChangeTokenSourceTOptions(name, config));... } ConfigurationChangeTokenSource 构造函数要求传入 IConfiguration其而 ChangeToken 的获取便是通过 IConfiguration 来得到的 public interface IConfiguration{...    IChangeToken GetReloadToken();... }public class ConfigurationChangeTokenSourceTOptions : IOptionsChangeTokenSourceTOptions {    private IConfiguration _config;    public ConfigurationChangeTokenSource(IConfiguration config) : this(Options.DefaultName, config) { }     public ConfigurationChangeTokenSource(string name, IConfiguration config)    {           if (config null){                 throw new ArgumentNullException(nameof(config));}_config config;}              public string Name { get; }              public IChangeToken GetChangeToken()    {        return _config.GetReloadToken();} } 因此要想使用 IOptionsMonitor必须要使用 IConfiguration 进行注册才可以当然你也可以实现自己的 ChangeToken。 总结 本章介绍了 IOptionsMonitor 的实现通过 IConfiguration 所提供的 ChangeToken 来注册监听事件对其 CurrentValue 进行更新。到此ASP.NET Core 中的 Options 源码也就分析完了其本身比较简单并没有太多东西。更具体的可以去 Github 上看完整的源码而 .NET Core 才刚刚发布了 Preview2 版本随时可能会有大的变化而我也会保持更新通过观察每次的变化也能学到更多的编程思想也是一件很快乐的事。 相关文章  ASP.NET Core 源码学习之 Options[1]:ConfigureASP.NET Core 源码学习之 Options[2]:IOptionsASP.NET Core 源码学习之 Options[3]:IOptionsSnapshotASP.NET Core MVC 源码学习详解 Action 的匹配asp.net core源码飘香从Hosting开始asp.net core源码飘香Configuration组件asp.net core源码飘香Options组件asp.net core源码飘香Logging组件 原文地址http://www.cnblogs.com/RainingNight/p/strongly-typed-options-ioptions-monitor-in-asp-net-core.html .NET社区新闻深度好文微信中搜索dotNET跨平台或扫描二维码关注
http://wiki.neutronadmin.com/news/408840/

相关文章:

  • 潍坊网页网站制作wordpress 七牛图床
  • 长治网络推广公司关键词优化排名易下拉霸屏
  • 购物网站 开发公司网站建设维保协议
  • 网站建设与运营实训总结宁波网站关键词排名提升
  • 重庆手机网站推广流程网站如何做淘宝推广
  • 企业网站开发韵茵百度网站收录入口
  • 个人简历模板免费下载网站宝安网站建设seo信科
  • 广东省 网站制作免费建网站抚顺
  • 运城网站建设多少钱丈哥seo博客工具
  • 产品商城网站建设百度怎么做网站域名
  • 专门做网站的公司有哪些免费送衣服在哪个网站做
  • 首涂模板网站游戏传奇
  • 盗版视频网站怎么做怎么在阿里巴巴做网站
  • 网页图片不显示网络优化公司排名
  • 做美瞳网站需要什么资质darna wordpress
  • 做音乐网站要多少钱福建凭祥建设工程有限公司网站
  • 引流推广网站销售流程八个步骤
  • 往建设厅网站上传东西重庆网站推广哪家服务好
  • 网站建设专wordpress注册导航
  • 国外室内设计网站推荐网络营销是什么?
  • 网站设计公司大概多少钱利川网站网站建设
  • 门户网站app有哪些一番赏公众号开发
  • 做网站app需要多少钱企业大全企业名录
  • 阿里云 wordpress 建站 教程天津互联网公司排名
  • 多网站怎么做seo网站建设 51下拉
  • 个体户可以注册网站建设服务搜索引擎推广文案
  • 做企业网站应该注意什么毕业设计网页设计题目
  • 建设部网站执业资格做坑人网站二维码
  • 简单的静态网站首页怎么在公司网站上安装百度商桥
  • 网站管理系统软件黄岛开发区网站制作