Пара ключ-значение в качестве параметра в консольном приложении

#c# #command-line #parameters #console-application

#c# #командная строка #параметры #консоль-приложение

Вопрос:

Есть ли простой способ разрешить набор пар ключ / значение (обе строки) в качестве параметров командной строки для консольного приложения?

Комментарии:

1. Вы имеете в виду параметры командной строки?

2. Да, я действительно имею в виду параметры командной строки.

Ответ №1:

Если вы имеете в виду наличие командной строки, выглядящей следующим образом: c:> YourProgram.exe / switch1:значение1 / switch2:значение2 …

Это можно легко проанализировать при запуске с помощью чего-то вроде этого:

 private static void Main(string[] args)
{
   Regex cmdRegEx = new Regex(@"/(?<name>. ?):(?<val>. )");

   Dictionary<string, string> cmdArgs = new Dictionary<string, string>();
   foreach (string s in args)
   {
      Match m = cmdRegEx.Match(s);
      if (m.Success)
      {
         cmdArgs.Add(m.Groups[1].Value, m.Groups[2].Value);
      }
   }
}
  

Затем вы можете выполнить поиск в словаре cmdArgs. Не уверен, что это то, чего вы хотите.

Ответ №2:

Не существует хорошего способа точной передачи пар ключ / значение из командной строки. Единственное, что доступно, — это массив строк, который вы можете перебирать и извлекать в виде пар ключ / значение.

 using System;

public class Class1
{
   public static void Main(string[] args)
   {
      Dictionary<string, string> values = new Dictionary<string, string>();

      // hopefully you have even number args count.
      for(int i=0; i < args.Length; i =2){
      {
           values.Add(args[i], args[i 1]);
      }

   }
}
  

а затем вызовите

Class1.exe ключ1 значение1 ключ2 значение2

Ответ №3:

Точкой входа приложения является main метод, который может принимать string[] один из аргументов (это аргументы командной строки).

Это нельзя изменить. Смотрите MSDN.

Чтобы упростить работу с этим, существует множество вспомогательных библиотек командной строки, которые можно использовать.

Одной из таких библиотек является .NET CLI от ребят из MONO и многих других.