Je suggère d'utiliser un dictionnaire pour la carte entre l'entrée et la commande. La solution la plus simple consiste à mapper directement entre les clés et le texte de la commande.
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();
}
En fonction de vos besoins réels, il pourrait être une solution plus propre pour effectuer une cartographie en deux étapes - de la clé d'entrée à une valeur ENUM et de la valeur ENUM au texte de commande. Vous devriez également penser à créer une classe de commande et fournir des instances statiques pour vos commandes.
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");
}
Avec cette classe le code pour envoyer les commandes serait quelque chose comme ceci.
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();
}
Très bonne réponse. –