在另一个接口内声明接口类型的属性

本文关键字:接口类型 属性 声明 另一个 接口 | 更新日期: 2023-09-27 17:58:43

我有一个名为ITaskManager的接口,它包含以下方法的签名,

public interface ITaskManager
{
   void Initialize();
   void CloseConnection();
   void OpenConnection()
}

还有一个界面ITaskScheduler,

public interface ITaskScheduler
{
   void Schedule();
   ITaskManager Task { get; }
}

那么ITaskManager Task{get;}声明的好处是什么?

在另一个接口内声明接口类型的属性

它将提供抽象。稍后,您可以从ITaskManager继承各种任务管理器,比如DataBaseTaskManagerFileTaskManager

这样,您就可以在接口级别工作,而不必担心ITaskManagerITaskScheduler的具体实现。

您可以有多个ITaskManager,任务调度程序需要一个ITaskManager才能运行。

这里有一个更好的例子:

public interface IResturant
{
   IMenu Menu {get;}
}
public interface IMenu
{
   Dictionary<string,double> MenuItems{get;}
}
public class BurgerKingMenu : IMenu
{
   // Menu items will contain the whole Burger King menu
}
public class KFCMenu : IMenu
{
   // Menu items will contain the whole KFC menu
}
public class KFCResturant : IResturant
{
   // will get KFC's IMenu
}
public class BurgerKingReturant : IResturant
{
   // will get Burger King's IMenu
}