Ich schlage vor, ein Wörterbuch zu verwenden, um zwischen der Eingabe und dem Befehl zu unterscheiden. Die einfachste Lösung ist eine direkte Zuordnung zwischen den Schlüsseln und dem Befehlstext.
Dictionary<ConsoleKey, String> map = new Dictionary<ConsoleKey, String>()
{
{ ConsoleKey.A, "process image" },
{ ConsoleKey.B, "apply blur effect" },
{ ConsoleKey.C, "save as png" }
};
ConsoleKey key = Console.ReadKey().Key;
String command;
if (map.TryGetValue(key, out command))
{
SendCommand(command);
}
else
{
HandleInvalidInput();
}
Je nach Ihren tatsächlichen Bedürfnissen könnte es eine sauberere Lösung sein, eine zweistufige Zuordnung vorzunehmen - von der Eingabetaste zu einem Aufzählungswert und von dem Aufzählungswert zum Befehlstext. Sie sollten auch darüber nachdenken, eine Befehlsklasse zu erstellen und statische Instanzen für Ihre Befehle bereitzustellen.
public class Command
{
public Command(String commandText)
{
this.CommandText = commandText;
}
public String CommandText { get; private set; }
public void Send()
{
// Dummy implementation.
Console.WriteLine(this.CommandText);
}
// Static command instances.
public static readonly Command ProcessImage = new Command("process image");
public static readonly Command BlurImage = new Command("apply blur effect");
public static readonly Command SaveImagePng = new Command("save as png");
}
Mit dieser Klasse würde der Code zum Senden der Befehle etwa wie folgt aussehen.
Dictionary<ConsoleKey, Command> map = new Dictionary<ConsoleKey, Command>()
{
{ ConsoleKey.A, Command.ProcessImage },
{ ConsoleKey.B, Command.BlurImage},
{ ConsoleKey.C, Command.SaveImagePng }
};
ConsoleKey key = Console.ReadKey().Key;
Command command;
if (map.TryGetValue(key, out command))
{
command.Send();
}
else
{
HandleInvalidInput();
}