异步SelectMany()扩展方法无法推断类型参数

时间:2018-06-19 12:22:14

标签: c# .net linq asynchronous

我正在努力用this answer采用的异步扩展方法来围绕类型推断进行研究。

public static class EnumerableExtensions
{
  public static async Task<IEnumerable<T1>> SelectAsync<T, T1>(
    this IEnumerable<T> enumeration,
    Func<T, Task<T1>> func)
  {
    return await Task.WhenAll(enumeration.Select(func));
  }

  public static async Task<IEnumerable<T1>> SelectManyAsync<T, T1>(
    this IEnumerable<T> enumeration,
    Func<T, Task<IEnumerable<T1>>> func)
  {
    return (await enumeration.SelectAsync(func)).SelectMany(x => x);
  }
}

我正在使用以下扩展方法:

var allChildren = await parents.SelectManyAsync(parent => ReturnsChildrenAsync(parent));

parents的类型为IList<Parent>

ReturnsChildrenAsync()返回一个Task<IList<Child>>

但是我遇到以下错误:

  

无法从用法中推断出方法'EnumerableExtensions.SelectManyAsync (IEnumerable ,Func >>)'的类型参数。尝试显式指定类型参数。

似乎无法推断出T1。为什么不能从Task<IList<Child>>派生出来?

0 个答案:

没有答案