抽象DateTime.Current依赖

是否有Nuget软件包或其他“标准”包装了当您的代码与DateTime.Now耦合时创建的硬性依赖关系?

在写我自己的作品之前,我正在寻求指导。 尽管这样做很微不足道,但我宁愿使用一些存在的东西,如果它已经成为一种标准。


我非常怀疑有任何nuget包对于任何非常微不足道的东西 - 一个接口和两个实现(“系统”时钟和一个假的测试)。

如果你自己做这些,我会强烈考虑让时钟返回一个DateTimeOffset而不是DateTime ,或者至少让它换行DateTime.UtcNow ... DateTime.Now是一个等待发生的问题...

不过,野田时间包含了所有这些。 你可能因为这个原因不想要整个野田时间,请记住你......

(有一个Noda Time nuget包,但它肯定是预发行版本,我需要在某个时候将其更新到0.2版本,但它仍然不在v1级别,尽管如此......)


如果您想要一种表达依赖关系的非常便宜而又快捷的方式,则无论您通常表达依赖关系,都可以使用Func<DateTime>Func<DateTimeOffset> 。 界面方法虽然更清洁:)


我不知道这样做的任何nuget包。 当我遇到这个问题时,我简单地创建了我自己的类型:

public static class SystemTime
{
    public static Func<DateTime> Now = () => DateTime.Now;
}

这样在你的单元测试中,你可以轻松地改变Now的功能来返回你想要的任何DateTime。


假设我们有一个方法:

public void Foo() {

  var now = DateTime.UtcNow;
  Record(now);      

我需要的解决方案就是我需要的任何时间DateTime.Now是:

public void Foo(DateTime? now = null) {

  Record(now.GetValueOrDefault(DateTime.UtcNow));
链接地址: http://www.djcxy.com/p/55759.html

上一篇: Abstracting the DateTime.Current dependency

下一篇: VIM for PHP: List if()'s and include()'s in Taglist