Задать вопрос
Morpheus_God
@Morpheus_God

Как правильно организовать выполнение Procces.Start?

Добрый день, как правильно оформить выполнение команд.
У меня есть строка, в нее я пишу команду и компьютер запускает нужные мне программы.
Сейчас все организовано через if

string command;
if (command == "reboot")
{
//Тут выполняется ребут компьютера.
}
if(command == "music")
{
//Компьютер запускает плеер 
}
//И так далее.


Тут просто парочка команд, но если их будет больше то выйдет говнокод с кучей if. Через switch думаю будет тоже самое.
Пробую через Dictionary.
static void CommandList (string command)
 {
    Dictionary<string, Process> Commands = new Dictionary<string, Process>();
    Commands.Add("music", Process.Start(@"E:\YandexDisk\Work\C#\SpeechRecognition\bin\Debug\player\AIMP.exe", "/PLAY"));
          foreach(var c in Commands)
        {
               command = c.Key;
        }
        }

Правильно ли я делаю? Или есть какой другой способ?
Update.
Может кому будет интересно. Рабочая версия словаря и команд.
static Dictionary<string, ProcessStartInfo> CreateCommands()
{
  Dictionary<string, ProcessStartInfo> commands = new Dictionary<string, ProcessStartInfo>();
  commands["music"] = new ProcessStartInfo(@"E:\YandexDisk\Work\C#\SpeechRecognition\bin\Debug\player\AIMP.exe", "/PLAY"));
  commands["video"] = new ProcessStartInfo("notepad.exe");
  return commands;
}

Dictionary<string, ProcessStartInfo> commands = CreateCommands();
string key = Console.ReadLine();
if (commands.ContainsKey(key))
  Process.Start(commands[key]);
  • Вопрос задан
  • 137 просмотров
Подписаться 2 Простой Комментировать
Решения вопроса 2
@Got_Oxidus
Учусь
Тут просто парочка команд, но если их будет больше то выйдет говнокод с кучей if. Через switch думаю будет тоже самое.

Согласен.

Этот вариант (со словарём) самый оптимальный).
И у него есть бонус команды можно добавлять и удалять в рантайме.
Ответ написан
Griboks
@Griboks Куратор тега C#
Ну это зависит от степени вашей "больной" фантазии. Можно придумать ещё больше абстрактные вещи. Например, через рефлексию получать все открытые методы некого класса и транслировать команду в имя метода, что бы заинвокнуть его.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы