【问题标题】:Why using a DateTimeProvider interface in C# [duplicate]为什么在 C# 中使用 DateTimeProvider 接口 [重复]
【发布时间】:2021-02-19 22:18:46
【问题描述】:

这个界面我已经看过很多次了:

    public interface IDateTimeProvider
    {
        DateTime Now { get; }
        DateTime UtcNow { get; }
        DateTimeOffset OffsetNow { get; }
        DateTimeOffset OffsetUtcNow { get; }
    }

我只是不明白为什么要使用这种更详细的方法,而不是简单地使用DateTimeDateTimeOffset 的静态属性。 在什么情况下使用日期提供器比直接使用静态属性更好?

public SomeService(IDateTimeProvider dateTimeProvider)
{
  this._dateTimeProvider = dateTimeProvider;
}


public void SomeMethod()
 {
      var date = _dateTimeProvider.UtcNow;
      // var date = DateTime.UtcNow; // why not this
   ...
 }

【问题讨论】:

  • 尝试为这段代码写一个单元测试,看看会发生什么

标签: c# .net datetime interface


【解决方案1】:

总之,可测试性。能够“硬编码”过去或未来的某些时间、非工作时间等,以在应用的单元测试中使用不同的代码路径。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-07
    • 2018-02-14
    • 2012-12-26
    • 1970-01-01
    • 2014-02-04
    • 1970-01-01
    • 2013-02-14
    相关资源
    最近更新 更多