嗨所以我已經創建了一個接口,日期時間是這樣的:的DateTime接口用於單元測試
public interface ITimeProvider<T>
{
T Now { get; }
string ToShortDateString();
}
然後,我有像這樣的接口之一implamentation:
public class DateTimeProvider : ITimeProvider<DateTime>
{
private DateTime _date;
public DateTime Now
{
get { return DateTime.Now; }
}
public DateTimeProvider()
{
_date = new DateTime();
}
public string ToShortDateString()
{
return _date.ToShortDateString();
}
}
然後我正在使用它在我的主要單位,並希望使用財產注入,但我遇到了一些問題,這裏是我所擁有的快照:
public class Atm : IAtm
{
public ITimeProvider _timeProvider { get;set; }
}
這不起作用,因爲我沒有指定類型。我可以做
public ITimeProvider<DateTime> _timeProvider { get;set; }
但是我不能使用另一個timeprovider。我也認爲(和我能想出的唯一解決方案)是讓ATM通用的,所以這樣的事情
public class Atm<T> : IAtm
{
public ITimeProvider<T> _timeProvider { get;set; }
}
但後來我覺得我不能使用屬性注入,還有沒有其他的辦法我可以做到這一點,我可以測試它嗎?
「但我遇到了一些問題」。 「不起作用,因爲我沒有指定類型」,但是您已經註冊了我設想的注入容器接口的實現? –
*「但後來我無法使用另一個timeprovider」* - 您是否有可能使用與DateTime'不同的類型來表示日期和時間? – poke
這不是,但我想嘲笑它的測試 – Sumsar1812