我是用 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();
}
这种方法的主要优点是您可以在运行时更改“开关”。
关于c# - 重构长 switch 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20586041/