Как выполнить отдельные сценарии на основе списка выбора в командной строке? - PullRequest
3 голосов
/ 20 марта 2019

Я искал в интернете это и не могу найти то, что искал.Я уверен, что это потому, что я не знаю терминологию (извините, я не лучший в кодировании).

Я хочу перечислить элементы в приложении командной строки, которые пользователь может выбирать индивидуально.Когда они выбирают элемент (в моем случае это сайт), я хочу иметь возможность выполнить определенный сценарий, сохраненный локально для выбранного сайта.Я попытался создать строку Process.Start с примером pdf, но я хочу иметь возможность выполнять определенные файлы на основе элементов, выбранных в списке, который выбирает пользователь.Вот мой код:

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace ListBoxConsole
{
    class ConsoleListBox
    {
        static void Main()
        {
            Console.TreatControlCAsInput = false;
            Console.CancelKeyPress += new ConsoleCancelEventHandler(BreakHandler);
            Console.Clear();
            Console.CursorVisible = false;
            Console.Title = "List Box Items";

            string[] sites = { "site1", "site2", "site3", "site4", "site5" };

            WriteColorString("Choose Site using down and up arrow keys and press enter", 23, 20, ConsoleColor.Black, ConsoleColor.White);

            int choice = ChooseListBoxItem(sites, 34, 3, ConsoleColor.DarkGreen, ConsoleColor.White);
            // do something with choice
            WriteColorString("You chose " + sites[choice - 1] + ".", 25, 22, ConsoleColor.Black, ConsoleColor.White);
            Process.Start(@"C:\Users\Downloads\insp.pdf");
            WriteColorString(" Press any key to exit", 27, 24, ConsoleColor.Black, ConsoleColor.White);
            Console.ReadKey();
            CleanUp();
        }

Любая помощь или направление будет принята с благодарностью.

Спасибо.

Ответы [ 2 ]

3 голосов
/ 21 марта 2019

Используйте класс для описания вашего объекта. Это сердце объектно-ориентированного программирования:

class MySite
{
  public string Name;
  public string Path;
}

Тогда для вашего конкретного случая вы можете сделать что-то вроде этого:

List<MySite> mySites = new List<MySite>();
mySites.Add(new MySite() { Name = "site1", Path = @"c:\a.pdf" });
mySites.Add(new MySite() { Name = "site2", Path = @"c:\b.pdf" });
mySites.Add(new MySite() { Name = "site3", Path = @"C:\c.pdf" });

int choice = ChooseListBoxItem(mySites.Select(s=>s.Name).ToArray(), 34, 3,
    ConsoleColor.DarkGreen, ConsoleColor.White);

WriteColorString("You chose " + mySites[choice - 1].Name + ".", 25, 22, 
    ConsoleColor.Black, ConsoleColor.White);
Process.Start(mySites[choice - 1].Path);
1 голос
/ 21 марта 2019

оператор if

if(sites[choice - 1] == choice1)
{
     Process.Start(@"C:\Users\Downloads\insp1.pdf");
}
else if(sites[choice - 1] == choice2)
{
     Process.Start(@"C:\Users\Downloads\insp2.pdf");
}
...