【发布时间】:2014-05-24 06:07:08
【问题描述】:
当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>。 -
@Asad 我同意,这将是一个很好的方法,但不幸的是,这些任务已经作为基本类型通过系统。
-
RunResult只是一个枚举,但它可能要复杂得多。