我们可以在 MapResult C# 中使用 void 方法吗

rus*_*ani 5 c# parsing console-application

我试图在控制台应用程序的 Main() 方法中使用带有 MapResult 方法的 void 方法。以下是我的代码,Class1、Class2 和 Class3 继承了 AbstractClass 并实现了它的 Execute() 方法:

Parser.Default.ParseArguments<
                        Class1, 
                        Class2,
                        Class3>(command.Split(' '))
                      .MapResult((AbstractClass o) => o.Execute(), err => null);
Run Code Online (Sandbox Code Playgroud)

在上面的代码中,我的 Execute() 方法返回 void。我收到以下错误:

无法从用法推断方法“ParserResultExtensions.MapResult(ParserResult, Func, Func, TResult>)”的类型参数。尝试明确指定类型参数。

但是,如果我将 Execute() 方法的返回类型更改为 int,它可以正常工作。

请建议我一些解决方案来使用 MapResult 的 void 返回方法。

Cod*_*ick 5

假设您使用的是 CommandLineParser ( https://github.com/commandlineparser/commandline ),MapResult 要求您提供一个指示成功/失败的返回值。尝试这个:

.MapResult((AbstractClass o) => {o.Execute(); return 1;}, err => null);
Run Code Online (Sandbox Code Playgroud)