為應對「19:00 後才顯示」的需求變更,引入 SimpleMenuAvailability 委派:
public delegate bool SimpleMenuAvailability();
public class MenuItemC
{
public readonly string Name;
public readonly SimpleMenuAction Action;
public readonly SimpleMenuAvailability IsAvailable;
public MenuItemC(string name, SimpleMenuAction action, SimpleMenuAvailability isAvailable)
{
Name = name; Action = action; IsAvailable = isAvailable;
}
}
private static MenuItemC[] MenuItems3 =
{
new MenuItemC("選項1", 執行方法, delegate() { return true; }),
new MenuItemC("選項2", 執行方法, delegate() { return true; }),
new MenuItemC("選項3", 執行方法, delegate() { return true; }),
new MenuItemC("選項4", 執行方法, delegate() { return DateTime.Now.Hour >= 19; })
};
雖然滿足當前需求,但:
delegate() { return ...; }),可讀性差。