【发布时间】:2017-02-20 13:27:31
【问题描述】:
我有以下方法:
public async Task Execute()
{
object previous = null;
// _delegates is of type IReadOnlyCollection<Delegate>
foreach (Delegate method in _delegates)
{
Task executing = (Task) (previous != null
? method.DynamicInvoke(_repository, previous)
: method.DynamicInvoke(_repository);
await executing;
// pseudo code here
if (executing returns something)
previous = executing.Result //<-- ?
else
previous = null;
}
}
基本上,我会遍历我按顺序执行的委托列表。每个委托都接收一个存储库作为参数,以及前一个委托的返回值(如果有的话)。
有些代表返回Task,有些返回Task<TResult>。如果遇到后者,我想将 TResult 值存储在 previous 中,以便将其作为参数传递给下一个委托。
有没有办法做到这一点?
【问题讨论】: