我有以下方法:
基本上我会按顺序遍历委托列表并执行。每个委托都接收一个仓库作为参数,并且返回前一个委托的返回值(如果有的话)。
一些委托将返回
有办法实现这个吗?
我有以下方法:
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
中,以便我可以将其作为下一个委托的参数传递。有办法实现这个吗?
System.Runtime.CompilerServices.AsyncTaskMethodBuilder1+AsyncStateMachineBox1[TResult,TStateMachine]
。 - Saeb Amini