嗨所以我已经创建了一个接口,日期时间是这样的:的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