如何访问我的 CommandLineParser 的值?

Posted

技术标签:

【中文标题】如何访问我的 CommandLineParser 的值?【英文标题】:How can I access the Value of my CommandLineParser? 【发布时间】:2021-09-06 15:14:28 【问题描述】:

我对 NuGet 包 CommandLineParser 有一些不明白的地方。这是我第一次看到这个?

让我先给你看:

在我的 Auto Watch 框架的左侧,我可以看到 Value 属性。但是,在右侧,在即时窗口中我无法访问它。这怎么可能。解析后如何使用这个包并读取我的值路径?

result.Value
error CS1061: 'ParserResult<Options>' does not contain a definition for 'Value' and no accessible extension method 'Value' accepting a first argument of type 'ParserResult<Options>' could be found (are you missing a using directive or an assembly reference?)

这个监视文件夹在做什么我没有做什么?

【问题讨论】:

【参考方案1】:

通过挖掘源代码,您可以看到ParserResult&lt;T&gt; 是一个abstract class.。

WithParsed 扩展方法检查ParserResult 是否是Parsed 的具体类型,调用委托并返回https://github.com/commandlineparser/commandline/blob/master/src/CommandLine/ParserResultExtensions.cs

所以现在您正在使用抽象基类而不是实现,这就是为什么您不能只使用result.Value,因为该属性不是位于基类而是位于实现上。

我的猜测是 Auto watch 可以知道实际类型并向您显示整个对象,而立即窗口则不能。

要使用.Value,您可以将其转换为Parsed&lt;Options&gt;

【讨论】:

【参考方案2】:

在这个项目中使用了这个 CommandLineParser 的具体例子:https://www.dropbox.com/s/nhq9os8dd9fim9u/FloorplanTransformation-3D-Walls.rar?dl=0

这是一个视觉工作室项目,看看你会得到更好的理解。

顺便简单解释一下:

    您必须创建 Parser 类的实例。
Parser parser = Parser.Default; 
    然后要解析参数,请执行以下操作
PraserResult<object> parser_result = parser.ParseArguments<MeshGenerateOptions, MorphologicalTransformOptions, other options>(args)

这里我们有类 MeshGenerateOptions 和 MorphologicalTransformOptions 属性 [Verb]

    现在执行以下操作,为每个解析的参数调用相应的回调函数
parserResult.WithParsed<MeshGenerateOptions>(VerbHandlers.HandleGenerateMesh);
            parserResult.WithParsed<MorphologicalTransformOptions>(VerbHandlers.HandleMorphologicalTransform);

这里,VerbHandlers 是一个不太感兴趣的静态类,HandleGenerateMesh 和 HandleMorphologicalTransform 是在解析对应动词时调用的回调函数。

你得到了如何使用上述项目的演示你可以观看教程:https://www.youtube.com/watch?v=MNILyflAxdY&t=21s但这只是为了构建和使用上面的项目。

【讨论】:

我在您的项目中找不到解析器。 转到主目录-> Program.cs

以上是关于如何访问我的 CommandLineParser 的值?的主要内容,如果未能解决你的问题,请参考以下文章

CommandLineParser 库 - 如何将一个选项的输出用于下一个选项

CommandLineParser 不接受内部带有减号的参数

C#CommandLineParser

[C++][原创]opencv中CommandLineParser使用

[C++][原创]opencv中CommandLineParser使用

csharp https://commandline.codeplex.com/上的CommandLineParser Nuget软件包的文档已过时。以下是更新的工作