c# - 获取非通用任务的结果

标签 c# .net

有没有办法得到 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/

相关文章:

c# - 模型 View 演示器 : Why is model static?

c# - WPF 更新的 Progress<T> 缓冲

c# - 有向图顶点子集的拓扑排序

.net - 为什么十进制的SqlParameter被弄乱了?

c# - 选择下拉列表时无法阻止 gridview 刷新

c# - 使用 BasicHttpBinding 进行身份验证的 WCF 服务

c# - 使用 Parallel Linq Extensions 合并两个序列,如何首先产生最快的结果?

python - 要汇总的 XML 文件

c# - T-Sql 选择并将许多行和列连接成一行和一列

c# - 什么开源 C# 库可以读/写微型 QR 码?