有没有办法得到 Task<T>
的结果?当它被转化为非通用的 Task
?
我知道这可能与反射有关,但是有没有办法做到这一点呢?也许通过使用 Expression
?
这是我想做的事情的一个例子:
RunResult RunTask(Task task)
{
task.Wait();
object result = ???;
if (result is RunResult)
return (RunResult)result;
return RunResult.Success;
}
我知道我可以通过不同的重载来实现这一点,但我不喜欢这种行为会根据选择的重载而改变。
如果任务没有结果,那么在这种情况下 null 就可以了。
最佳答案
这似乎是一个 Task<RunResult>
, 正确的?然后将其转换为该类型并提取结果。
如果我的这个猜测是错误的,你可以使用dynamic
快速获取 Result
的值属性(property)。
((dynamic)myTask).Result
现在这个结果值的类型是 dynamic
所以我不确定您想如何从中提取数据。
关于c# - 获取非通用任务的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23838513/