终于知道什么情况下需要实现.NET Core中的IOptions接口

自从接触 IOptions 之后,一直纠结这样的问题:自己定义的 Options 要不要实现 IOptions 接口。

微软有的项目中实现了,比如 Caching 中的 MemoryCacheOptions :

public class MemoryCacheOptions : IOptions<MemoryCacheOptions>
{   
public ISystemClock Clock { get; set; }
   public TimeSpan ExpirationScanFrequency { get; set; } = TimeSpan.FromMinutes(1);MemoryCacheOptions IOptions<MemoryCacheOptions>.Value{ get { return this; }} }

有的项目中就没有实现,比如 Session 中的 SessionOptions :

    public class SessionOptions{       
public string CookieName { get; set; } = SessionDefaults.CookieName;
public string CookieDomain { get; set; }
public string CookiePath { get; set; } = SessionDefaults.CookiePath;
public bool CookieHttpOnly { get; set; } = true;
public CookieSecurePolicy CookieSecure { get; set; } = CookieSecurePolicy.None;
public TimeSpan IdleTimeout { get; set; } = TimeSpan.FromMinutes(20);}

但自己一直没发现实现 IOptions 究竟有什么用处,于是之前的代码就都没实现,比如之前一篇博文中的 TopClientOptions 。

今天在使用 EnyimMemcachedCore ,需要手动 new MemcachedClientOptions 给 MemcachedClientConfiguration 的构造函数传参时,终于明白了实现 IOptions 的真正用处。

public class MemcachedClientConfiguration : IMemcachedClientConfiguration
{    public MemcachedClientConfiguration(ILogger<MemcachedClient> logger,IOptions<MemcachedClientOptions> optionsAccessor){}
}

如果 MemcachedClientOptions 不实现 IOptions<MemcachedClientOptions> 接口,就根本无法将 MemcachedClientOptions 的实例传递给 MemcachedClientConfiguration 的构造函数。

所以,如果完全使用依赖注入,不会出现手动 new 的情况,可以不用实现 IOptions 。否则,必须要实现。保险起见,还是实现一下为好。

public class MemcachedClientOptions : IOptions<MemcachedClientOptions>
{    //..public MemcachedClientOptions Value => this;
}

原文地址:http://www.cnblogs.com/dudu/p/6882110.html


.NET社区新闻,深度好文,微信中搜索dotNET跨平台或扫描二维码关注

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/325437.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Amazing ASP.NET Core 2.0

前言 ASP.NET Core 的变化和发展速度是飞快的&#xff0c;当你发现你还没有掌握 ASP.NET Core 1.0 的时候&#xff0c; 2.0 已经快要发布了&#xff0c;目前 2.0 处于 Preview 1 版本&#xff0c;意味着功能已经基本确定&#xff0c;还没有学习过 ASP.NET Core 的同学可以直接…

Java面试常问计算机网络问题

转载自 Java面试常问计算机网络问题 一、GET 和 POST 的区别 GET请注意&#xff0c;查询字符串&#xff08;名称/值对&#xff09;是在 GET 请求的 URL 中发送的&#xff1a;/test/demo_form.asp?name1value1&name2value2 GET 请求可被缓存 GET 请求保留在浏览器历史…

使用DocFX生成文档

文档生成工具DocFX&#xff0c; 类似JSDoc或Sphinx&#xff0c;可以从源代码中提取注释生成文档之外&#xff0c;而且还有语法支持你加入其他的文件链接到API添加额外的说明&#xff0c;DocFX会扫描你的源代码和附加的文件为你生成一个完整的HTML模版网站&#xff0c;你可以自己…

如何在一分钟内搞定面试官

转载自 如何在一分钟内搞定面试官 很多人的求职面试的过程中都会遇到这个问题&#xff1a; “请做个自我介绍。” 有的人&#xff0c;可以口若悬河、妙语连珠讲3分钟&#xff0c;有的人&#xff0c;可能磕磕巴巴&#xff0c;讲了30秒&#xff0c;前者一定能胜过后者&#x…

基于ZKWeb + Angular 4.0的开源管理后台Demo

这是一套基于ZKWeb网页框架和Angular 4.0编写的开源管理后台Demo&#xff0c;实现了前后端分离和模块化开发&#xff0c; 地址是: https://github.com/zkweb-framework/ZKWeb.MVVMDemo &#xff0c;开源协议是MIT&#xff0c;你可以随意的修改并用于个人或商业用途 我之前已经…

祝我们的所有女孩子,女生节快乐~

公历3月7日是女生节。起源于20世纪90年代初&#xff0c;由山东大学发起&#xff0c;后发展于中国各高校&#xff0c;是一个关爱女生、展现高校女生风采的节日。女神节快乐祝我们18级青鸟1班的女孩儿们&#xff0c;女生节快乐&#xff01;愿快乐与你作陪&#xff0c;美丽将你跟随…

从 0 开始手写一个 Spring MVC 框架,向高手进阶

转载自 从 0 开始手写一个 Spring MVC 框架&#xff0c;向高手进阶 Spring框架对于Java后端程序员来说再熟悉不过了&#xff0c;以前只知道它用的反射实现的&#xff0c;但了解之后才知道有很多巧妙的设计在里面。如果不看Spring的源码&#xff0c;你将会失去一次和大师学习…

把Springboot项目部署到服务器上和结束运行

部署 nohup java -jar onlile-1.0.0-SNAPSHOT.jar &关闭 kill -9 22899 杀死 进程的pid &#xff0c;关闭程序。cat info.log 查看文件ps -ef | grep java 查看java 运行的几个进程 pid

CoreCLR源码探索(六) NullReferenceException是如何发生的

NullReferenceException可能是.Net程序员遇到最多的例外了, 这个例外发生的如此频繁,以至于人们付出了巨大的努力来使用各种特性和约束试图防止它发生, 但时至今日它仍然让很多程序员头痛, 今天我将讲解这个令人头痛的例外是如何发生的. 可以导致NullReferenceException发生的…

java中随机生成26个字母组合的随机验证码

实现原理&#xff0c;通过随机生成1-52的随机数&#xff0c;然后从定义好的字母数字中取元素进行组合。 下面是代码&#xff1a; public static void login(){String [] yan {"a","b","c","d","e","f","g&q…

详解 Java 中的三种代理模式

转载自 详解 Java 中的三种代理模式 代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能. 这里使用到编程中的一个思想:不要随意去修改…

Ubuntu上配置SQL Server Always On Availability Group

下面简单介绍一下如何在Ubuntu上一步一步创建一个SQL Server AG&#xff08;Always On Availability Group&#xff09;&#xff0c;以及配置过程中遇到的坑的填充方法。 目前在Linux上可以搭建两种类型的SQL Server AG&#xff0c;一种是高可用性的结构同时使用Cluster服务器提…

架构必备「RESTful API」设计技巧经验总结

转载自 架构必备「RESTful API」设计技巧经验总结 【译者注】本文是作者在自己的工作经验中总结出来的RESTful API设计技巧&#xff0c;虽然部分技巧仍有争议&#xff0c;但总体来说还是有一定的参考价值的。以下是译文。 简单说一下代码重用 记得在Ken Rogers的Medium博客…

比较两个title是否相等(差点把我送走)

事情是这样的 把相同的分类找出来返回给前端我就比较了title 我用了两个比较字符串&#xff0c;结果vos里面输出的全是null 后来 想到字符串比较的是地址 结束 总结 忘记基础害人不浅

开篇有益-解析微软微服务架构eShopOnContainers(一)

为了推广.Net Core&#xff0c;微软为我们提供了一个开源Demo-eShopOnContainers&#xff0c;这是一个使用Net Core框架开发的&#xff0c;跨平台&#xff08;几乎涵盖了所有平台&#xff0c;windows、mac、linux、android、ios&#xff09;的&#xff0c;基于微服务架构的&…

React打包运行

项目打包运行 npm run build //生成打包文件 npm install -g serve //全局下载服务器包 serve build //通过服务器命令运行打包项目 访问: http://localhost:5000 //浏览器访问

端午将至……想和程序猿Coding个粽子行不行?

端午将至……都说程序猿无所不能……不造 Coding个粽子行不行&#xff1f; Build Tour 2017 世界巡回展已经开始倒计时……大家都报完名了么&#xff1f; 反正&#xff0c;M姐现在已经安排了我软的程序猿们不远万里的来到中国&#xff0c;他们将会在上海和北京两地&#xff0c;…

把本地文件上传到gitee

第一步 先克隆远程文件到本地 第二步 上传本地文件到远程

【活动】HoloLens 黑科技等你来探秘

微软全息眼镜&#xff08;HoloLens&#xff09;是微软最新推出的混合现实头显设备。酷炫的全息图像和包括语音控制和手势控制的全自然交互手段给用户带来前所未有的体验&#xff0c;目前已经在制造、医疗、建筑、娱乐等多个行业展现了非常好的应用前景和市场潜力。HoloLens既是…