public async Task QueueCallAsync(Task apiCall, RequestType requestType)
{
// how do you forward the call to the generic implementation while omitting the result?
await QueueCallAsync<Void>(apiCall, requestType);
}
public async Task<T> QueueCallAsync<T>(Task<T> apiCall, RequestType requestType)
{
}
到目前为止,我实现的只是递归调用或不可编译的代码。我宁愿包装通用实现而不是复制代码。
有谁知道如何告诉c#编译器在这里使用泛型方法?
与其他问题不同,我想知道是否有内置的,有意的方法,在不使用反射的情况下解决这个问题。
我宁愿复制粘贴代码而不是在这种情况下反映。
答案 0 :(得分:2)
您可以简单地将任务包装到另一个返回伪int值的位置:
async Task<int> Wrap(Task t)
{
await t;
return 42;
}
await QueueCallAsync<int>(Wrap(apiCall), requestType);
旁注:您使用的方法名称可能会让方法的用户感到困惑,因为通常在创建任务时已经运行了这些名称,而且它们“排队”它们的时间太晚......