Is there an easy way to allow a collection of Key/Value pairs (both strings) as command line parameters to a console app?
If you mean having a commandline looking like this: c:> YourProgram.exe /switch1:value1 /switch2:value2 ...
This can easily be parsed on startup with something looking like this:
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);
}
}
}
You can then do lookups in cmdArgs dictionary. Not sure if that's what you want though.
There is no good way to precisely pass key/value pairs from command-line. The only thing that's available is an array of string which you can loop through and extract as key/value pairs.
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]);
}
}
}
and then call
Class1.exe key1 value1 key2 value2
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With