获取非通用任务的结果

jak*_*sch 3 .net c#

有没有办法得到a的结果,Task<T>当它被转发为非泛型Task?我知道这可以用Reflection做,但有没有办法在没有它的情况下做到这一点?也许是通过使用Expression?这是我想要做的一个例子:

RunResult RunTask(Task task)
{
    task.Wait();

    object result = ???;

    if (result is RunResult)
        return (RunResult)result;

    return RunResult.Success;
}
Run Code Online (Sandbox Code Playgroud)

我知道我可以通过具有不同的重载来实现这一点,但我不喜欢行为根据选择的重载而改变.

如果任务没有结果,那么在这种情况下null就可以了.

usr*_*usr 7

这似乎是一个Task<RunResult>,对吧?然后将其转换为该类型并提取结果.

如果我的这个猜测是错误的,你可以dynamic用来快速达到Result财产的价值.

((dynamic)myTask).Result
Run Code Online (Sandbox Code Playgroud)

现在这个结果值是类型的,dynamic所以我不确定你想如何从中提取数据.