public static ExporterConsoleParameters ExtractParametersFromArgs(string[] args)
{
var t = typeof(ExporterConsoleParameters);
var instance = new ExporterConsoleParameters();
foreach (var s in args)
{
var trimmed = s.TrimStart('-');
var kv = trimmed.Split('=');
if (kv.Length != 2)
{
Console.WriteLine("Unrecognized parameter: {0}", s);
continue;
}
var key = kv[0].Trim();
var value = kv[1].Trim().Trim('"');
var prop = t.GetProperty(key);
if (prop == null)
{
Console.WriteLine("Unrecognized parameter: {0}", key);
continue;
}
if (prop.PropertyType == typeof(bool))
{
bool parsedValue = Boolean.Parse(value);
prop.SetValue(instance, parsedValue);
continue;
}
if (prop.PropertyType == typeof(string))
{
prop.SetValue(instance, value);
continue;
}
if (prop.PropertyType == typeof(string[]))
{
var parsedValue = value.Split(';');
prop.SetValue(instance, parsedValue);
continue;
}
Console.WriteLine("Cannot parse parameter for source property {0}", key);
}
try
{
instance.Validate();
}
catch (Exception ex)
{
Console.WriteLine("Parameters validation error: {0}", ex.Message);
PrintHelp();
return(null);
}
return(instance);
}