我真的很喜歡this suggestion on StackOverflow使用IClock接口爲您的代碼提供當前日期/時間,因此您可以在單元測試時提供不同的日期/時間(更不用說將所有DateTime.Now引用分解了)。如何在使用IClock和DI的實體中引用DateTime.Now?
我可以使用依賴注入爲我的服務層提供此接口的實現。
但是,我有很多DateTime.Now引用在我的實體(下面的示例)。解決這個問題的首選方式是什麼?
public class SampleEntity
{
private DateTime someField;
private DateTime someOtherDate;
public SampleEntity()
{
someField = DateTime.Now;
}
public bool SomeProperty
{
get { return someOtherDate < DateTime.Now.Date; }
}
public bool SomeFunction()
{
return SomeOtherDate < DateTime.Now.Date;
}
}
我可以傳遞參數中的功能和/或構造,但仍然要求我明確設置的東西,如果我檢索一個ORM的實體。