ISystemClock
обычно регистрируется в вызове AddAuthentication
. Вы можете увидеть это в источниках здесь.
Или вместо этого вы можете позвонить AddDefaultIdentity
, что, в свою очередь, вызывает AddAuthentication
. Источники здесь.
Рекомендуется использовать один из этих механизмов вместо AddIdentityCore
. Однако, если вам по какой-то причине нужно позвонить AddIdentityCore
, то вы можете зарегистрировать часы самостоятельно:
services.TryAddSingleton<ISystemClock, SystemClock>();
Хотя вы можете также столкнуться с другими вещами, чтобы зарегистрировать, что вышеупомянутые методы заботятсяиз. См. Также этот вопрос и ответ на него .
Что касается того, что это такое - интерфейс ISystemClock
предназначен для получения текущего времени. Реализация SystemClock
получает реальное время с компьютера (просто вызывая DateTimeOffset.UtcNow
). Однако при тестировании это позволяет реализации «поддельных часов» передавать различные значения текущего времени, проверяя сценарии, такие как високосные дни и другую временную бизнес-логику. Такой шаблон часто называют «виртуальными часами» или «издеваются над часами».