Я получаю ошибку компилятора для следующей строки кода:Task.WhenAll с различными типами
IEnumerable<IPurchasedItem<IFruit>>[] result = await Task.WhenAll(
repository1.LoadItems(id),
repository2.LoadItems(id)
);
CS0029 Ошибка Не удается неявно преобразовать тип «пустот» в
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])
Немного связано: http://stackoverflow.com/questions/23766808/why-doesnt-this-exception-get-thrown –