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

时间:2018-02-10 10:26:51

标签: 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);

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

  

方法的类型参数   'ParserResultExtensions.MapResult(ParserResult,Func,   Func,TResult&gt;)'不能从用法中推断出来。   尝试明确指定类型参数。

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

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

1 个答案:

答案 0 :(得分:1)

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

.MapResult((AbstractClass o) => {o.Execute(); return 1;}, err => null);