Пара ключ-значение как параметр в консольном приложении - PullRequest
6 голосов
/ 10 мая 2011

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

Ответы [ 3 ]

9 голосов
/ 10 мая 2011

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

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

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.Не уверен, что ты этого хочешь.

6 голосов
/ 10 мая 2011

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

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значение2

3 голосов
/ 10 мая 2011

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

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

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

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

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