如果您的问题是,您想依赖注入一个计时器,以后可以将事件绑定到该计时器,它应该很简单。
只需创建您的Timer
类以遵循ITimer
接口并在其上创建方法来执行您想要的操作。
public class Calendar
{
public Calendar(ITimer timer)
{
// timer is the dependency injected timer
timer.SetEvent(EventReminder, 3600);
}
public void EventReminder()
{
Console.Write("Hey, it's time for your appointment!");
}
}
public interface ITimer
{
void SetEvent(Action callbackMethod, int interval);
}
在这种情况下,您有一个日历应用程序,并且您希望您的应用程序有一个计时器。但是您并不关心计时器是如何工作的,甚至不关心什么样的计时器(也许您想要一个可以在几分钟或几小时内工作的计时器,或者它以其他方式工作)。你所知道的是你想要一个计时器,所以你依赖注入一个。
您必须创建一个接口来定义计时器将做什么,因为尽管它不关心您使用哪个计时器,但它确实关心计时器的功能。在我们的例子中,计时器可以做一件事——将事件设置为在某个时间间隔后发生。
所以我们注入了定时器,但是为了能够使用它,或者设置它,我们使用接口来定义方法。我们永远不知道它在内部是如何工作的——我们甚至不知道它有一个 OnElapsedEvent,我们也不在乎。把它留给计时器的创建者,我们只需要一种方法来完成任务,这就是上面的代码所展示的。