Если вы хотите использовать IClock
, вам придется заменить все DateTime.Now
на Clock.Now
, и ваш класс возьмет экземпляр IClock
в конструкторе:
public class SampleEntity
{
private DateTime someField;
private DateTime someOtherDate;
private readonly IClock _clock;
public SampleEntity(IClock clock)
{
_clock = clock;
someField = clock.Now;
}
public bool SomeProperty
{
get { return someOtherDate < _clock.Now.Date; }
}
public bool SomeFunction()
{
return SomeOtherDate < _clock.Now.Date;
}
}
Насколькокак прохождение конкретной реализации IClock
при создании экземпляра сущности, большинство структур ORM предоставляют ловушки, которые можно использовать для предоставления пользовательских экземпляров сущностей.
Если ваш ORM не предоставляет такие ловушки, вы все равно можете использоватьпринятый ответ от связанного вопроса, который использует public static Func<DateTime> Now = () => DateTime.Now;
провайдера.