为什么我需要创建 returns DateTime.Now 的 DateTime 服务而不是直接使用 DateTime.Now?
Why do I need to create a DateTime service which returns DateTime.Now instead of using DateTime.Now directly?
我一直在观看 Jason Taylor 关于 ASP.NET 核心的清洁架构的演讲(时间 35:52)
https://www.youtube.com/watch?v=dK4Yb6-LxAk&t=2134s&ab_channel=GOTOConferences
并且他创建了一个 DateTimeService
其中 returns DateTime.Now
并通过 AddTransient
方法注册,他建议使用它而不是直接使用 DateTime.Now
因为在在这种情况下,他不依赖于机器时钟。
我不清楚为什么他在这种情况下没有依赖关系,你能解释一下它是如何工作的吗?
如果您要实现一种不同的方式来获取当前时间,您需要做的就是为您的 IDateTimeService
创建一个新的实现,而不是更改 DateTime.Now
的每个实例在你的项目中。
一个例子是创建一个通过外部请求获取时间的服务,或者轻松地为单元测试创建一个模拟,这样您就可以正确断言依赖于日期和时间的结果。
我一直在观看 Jason Taylor 关于 ASP.NET 核心的清洁架构的演讲(时间 35:52)
https://www.youtube.com/watch?v=dK4Yb6-LxAk&t=2134s&ab_channel=GOTOConferences
并且他创建了一个 DateTimeService
其中 returns DateTime.Now
并通过 AddTransient
方法注册,他建议使用它而不是直接使用 DateTime.Now
因为在在这种情况下,他不依赖于机器时钟。
我不清楚为什么他在这种情况下没有依赖关系,你能解释一下它是如何工作的吗?
如果您要实现一种不同的方式来获取当前时间,您需要做的就是为您的 IDateTimeService
创建一个新的实现,而不是更改 DateTime.Now
的每个实例在你的项目中。
一个例子是创建一个通过外部请求获取时间的服务,或者轻松地为单元测试创建一个模拟,这样您就可以正确断言依赖于日期和时间的结果。