如何在运行时创建Task <t>?

时间:2018-07-12 18:34:41

标签: c# reflection runtime task

有什么方法可以在运行时创建Task<T>的类型,而T是仅在运行时已知的类型?我想使用Task<T>的默认值创建T,但是在获取T的默认值并使用Task.FromResult(default_value)之后,我得到的是Task<object>,而不是{{ 1}},因为在大多数情况下,默认值为null。有解决这个问题的想法吗?

Task<T>

1 个答案:

答案 0 :(得分:0)

泛型用于编译时类型检查。您无法在运行时定义<T>。最好的办法是Task<object>,将其await强制转换为想要的类型,或者转换为Task<dynamic>

我不确定为什么要这么做。

如果您可以在编译时提供泛型类型,则可以这样做

public Task<T> GetDefaultTask<T>() {
    return Task.FromResult(default(T));
}