我在c#中编程,你通过口述命令控制,所以现在我有一个很长的switch语句.就像是
switch (command) { case "Show commands": ProgramCommans.ShowAllCommands(); break; case "Close window": ControlCommands.CloseWindow(); break; case "Switch window": ControlCommands.SwitchWindow(); break; }
等等
几乎所有情况都只调用一个方法,方法不在一个类中,它们分布在许多类中.所以问题是,我如何能够将这种转换重构为更优雅的方式?
您可以这样做来重构您的switch语句:
var commands = new Dictionary<string, Action>() { { "Show commands", () => ProgramCommans.ShowAllCommands() }, { "Close window", () => ControlCommands.CloseWindow() }, { "Switch window", () => ControlCommands.SwitchWindow() }, }; if (commands.ContainsKey(command)) { commands[command].Invoke(); }
这种方法的主要优点是您可以在运行时更改"切换".