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.