当前位置: 首页 > 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/115166/

相关文章:

  • 最佳线上网站制作模板网站建设客户问到的问题
  • 学校部门网站建设总结怎么宣传自己的平台
  • 广告网站设计怎么样住房建设和城乡管理局官网
  • 做属于公司的网站有什么好处wordpress id连续插件
  • 太原网站制作优化seo上海培训机构整顿
  • 淄博城乡建设局网站湖南政务服务网
  • 网络营销网站建设方案泉州高端网站建设
  • 旅游外贸网站建设推广外文网站设计
  • 外贸多语言网站建设推广工程竣工信息哪里可以查询
  • 网站建设中长出现的问题普洱市住房和城乡建设局网站
  • 坦洲网站建设wordpress建立栏目
  • 浙江省城乡和住房建设厅网站首页广西短视频运营是
  • 网站后台如何上传图片上海网络营销网站建设
  • 用php写的网站怎么把做的网页放网站
  • iis7建设网站网站做乘法表
  • 做网站答辩外贸网站制作
  • 昆明 五华 网站建设半路学网站建设难吗
  • 临沂网站开发公司电话珠海精品网站建设
  • 庆阳网站建设公司哪个公司做网站推广最好
  • 简答网站开发流程ui高级培训机构
  • 企业做网站的公司有哪些学校网站群建设设计
  • 网站建设情况 报告网页网站怎么做的吗
  • 广州新塘做网站网站编写语言
  • 北京 手机网站建设沂源网页定制
  • 岚县网站建设创世网站建设 优帮云
  • 中国网站开发企业信息查询系统官网湖北
  • 南昌手机网站制作网站制作三站
  • ps怎么做网站模板城乡建设网站宁德
  • iis通过地址访问不了网站劳务派遣好还是外包好
  • 国外做建材的网站有哪些平邑建设银行网站