i getting compiler error following line of code:
ienumerable<ipurchaseditem<ifruit>>[] result = await task.whenall( repository1.loaditems(id), repository2.loaditems(id) );
error cs0029 cannot implicitly convert type 'void'
system.collections.generic.ienumerable<ipurchaseditem<ifruit>>[]
my repository methods like:
public async task<ienumerable<ipurchaseditem<apple>>> loaditems(int id) {} public async task<ienumerable<ipurchaseditem<orange>>> loaditems(int id) {}
...where apple
, orange
descend from:
public interface ipurchaseditem<out t> : t : ifruit {} public class fruit : ifruit {} public class apple : fruit {} public class orange : fruit {}
i've looked @ this question, seems i'm doing what's suggested, i.e. asking ienumerable[]
rather task<ienumerable>[]
.
what doing wrong - , if isn't right approach best way me await , combine results of both loaditems()
methods? planning on doing:
result[0].concat(result[1])
task<t>
class, , therefore invariant. task<string>
not task<object>
- , more complicated example, task<ienumerable<ipurchaseditem<apple>>>
not task<ienumerable<ipurchaseditem<fruit>>>
want be.
you write method convert 1 another, of course - like:
public static task<ttarget> convert<tsource, ttarget>(task<tsource> task) tsource : ttarget { return await task; }
then convert specific tasks task<ienumerable<ipurchaseditem<fruit>>>
tasks instead, , then task.whenall
want.