【发布时间】:2016-06-06 19:52:05
【问题描述】:
我收到以下代码行的编译器错误:
IEnumerable<IPurchasedItem<IFruit>>[] result = await Task.WhenAll(
repository1.LoadItems(id),
repository2.LoadItems(id)
);
错误 CS0029 无法将类型“void”隐式转换为
System.Collections.Generic.IEnumerable<IPurchasedItem<IFruit>>[]
我的存储库方法如下所示:
public async Task<IEnumerable<IPurchasedItem<Apple>>> LoadItems(int id) {}
public async Task<IEnumerable<IPurchasedItem<Orange>>> LoadItems(int id) {}
...Apple 和 Orange 来自:
public interface IPurchasedItem<out T> : where T : IFruit {}
public class Fruit : IFruit {}
public class Apple : Fruit {}
public class Orange : Fruit {}
我查看了this question,但似乎我已经在按照建议进行操作,即请求IEnumerable[] 而不是Task<IEnumerable>[]。
我做错了什么 - 如果这不是正确的方法,那么我等待并结合 LoadItems() 方法的结果的最佳方法是什么?
我原本打算这样做:
result[0].Concat(result[1])
【问题讨论】:
标签: c# async-await