c# - 在所有地方更改 DateTime.now 的最佳方法
问题描述
我有一个要求,无论我们有 DateTime。现在检查它应该与模拟日期检查(从 UI - 仅在测试环境中可访问),我应该如何设计这个功能以最小的变化。是否可以覆盖 DateTime.Now 功能,并且无论在何处使用 DateTime.Now,它都会读取覆盖的值。
对此的任何帮助将不胜感激。
谢谢
解决方案
基本上,DateTime.Now
直接停止使用。相反,引入一个时钟的抽象(我通常称之为它IClock
),它具有“获取当前日期和时间”的单一操作并将其注入任何地方,就像任何其他依赖项一样。
然后,您可以使用一个简单的实现来委托DateTime.Now
(或者更好,DateTime.UtcNow
我建议)进行生产,并使用一个假实现来进行测试。
这是我们在我的NodaTime 库中强烈鼓励的方法- 我们为您提供接口和生产/假实现。
推荐阅读
- vuejs2 - vuejs 在不同元素内渲染模板的一部分而不重复
- php - 无法按 ID 对表值进行分组
- python - 从日志文件中解析 WMS 名称我 python
- ip - 如何从他/她的 IP 地址中找到访客姓名
- javascript - 如何从数组中提取具有相同键的值并计算它们的平均值?
- java - javafx 通过 setStyle 为选定/悬停的 ToggleButton 更改背景图像
- swift - 图像未在 collectionView Swift 中显示
- html - 如何在容器引导程序 4 中居中标签
- groovy - Groovy 调用运算符在类字段上使用时抛出 MissingMethodException
- node.js - nodejs - 专用工作者库