鉴于以下扩展名:
public static async Task<IEnumerable<TResult>> Select<TSource, TResult>(
this Task<IEnumerable<TSource>> source, Func<TSource, TResult> selector)
=> (await source).Select(selector);
我希望类型推断接受IEnumerable<TResult>
的任何子类型,但正如我发现的那样,这不起作用。它无法推断出类型。
然后,如果我尝试重写类型参数,如下所示:
public static async Task<IEnumerable<TResult>> Select<T, TSource, TResult>(
this Task<T> source, Func<TSource, TResult> selector)
where T: IEnumerable<TSource>
=> (await source).Select(selector);
以上认识到任务的使用。选择(fn)但它抱怨它不能推断出类型。
这里有什么帮助吗?我真的希望这个工作:
答案 0 :(得分:0)
https://www.nuget.org/packages/Open.Linq.AsyncExtensions/1.1.1
我提出的解决类型推断/特异性问题的解决方案是包含一组.AsEnumerable()
扩展,其中包含List<T>
,T[]
,{{1}等常见案例},Dictionary<TKey,TValue>
等
只要签名为Queue<T>
,扩展程序就可以。