如何发现 CommandLineParser 出现错误,以便我可以 return 我自己的错误代码?
How to catch that there is an error from CommandLineParser so I can return my own error codes?
如何捕捉 CommandLineParser 的错误,以便我可以 return 我自己的错误代码?
当从 SSIS 调用我的控制台应用程序时,我需要 return 我自己的代码。
class Program
{
static void Main(string[] args)
{
try
{
var myParserResult = Parser.Default.ParseArguments<UploadFileCommand, DownloadFileCommand, CompressFileCommand>(args)
.WithParsed<ICommand>(t => t.Execute());
var parsed = myParserResult as NotParsed<object>;
if (parsed != null && parsed.Errors.Any())
{
Console.WriteLine("Has Errors");
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
}
方法ParseArguments()
将return一个ParserResult<T>
对象来指示解析是否成功。如果解析不成功,NotParsed<T>
instance is returned. This class has an Errors
property to contain all the Error
实例说明了解析失败的原因。您可以在正常的 foreach()
循环中使用它来迭代发现的错误:
ParserResult<Options> result = parser.ParseArguments<Options>(args);
Console.WriteLine(result);
NotParsed<Options> notParsed = result as NotParsed<Options>;
if (notParsed != null)
{
foreach (var error in notParsed.Errors)
{
Console.WriteLine(error);
}
}
这可能会打印以下调试输出:
CommandLine.NotParsed`1[Testing.Options]
CommandLine.UnknownOptionError
CommandLine.UnknownOptionError
如何捕捉 CommandLineParser 的错误,以便我可以 return 我自己的错误代码? 当从 SSIS 调用我的控制台应用程序时,我需要 return 我自己的代码。
class Program
{
static void Main(string[] args)
{
try
{
var myParserResult = Parser.Default.ParseArguments<UploadFileCommand, DownloadFileCommand, CompressFileCommand>(args)
.WithParsed<ICommand>(t => t.Execute());
var parsed = myParserResult as NotParsed<object>;
if (parsed != null && parsed.Errors.Any())
{
Console.WriteLine("Has Errors");
}
}
catch (Exception ex)
{
Console.WriteLine(ex.ToString());
}
}
}
方法ParseArguments()
将return一个ParserResult<T>
对象来指示解析是否成功。如果解析不成功,NotParsed<T>
instance is returned. This class has an Errors
property to contain all the Error
实例说明了解析失败的原因。您可以在正常的 foreach()
循环中使用它来迭代发现的错误:
ParserResult<Options> result = parser.ParseArguments<Options>(args);
Console.WriteLine(result);
NotParsed<Options> notParsed = result as NotParsed<Options>;
if (notParsed != null)
{
foreach (var error in notParsed.Errors)
{
Console.WriteLine(error);
}
}
这可能会打印以下调试输出:
CommandLine.NotParsed`1[Testing.Options]
CommandLine.UnknownOptionError
CommandLine.UnknownOptionError