我想知道是否有一种方法可以编写一个函数来“通过”一个 IAsyncEnumerable ......也就是说,该函数将调用另一个 IAsyncEnumerable 函数并产生所有结果而无需编写 aforeach
来执行它?
我发现自己经常编写这种 Code Pattern。这是一个例子:
async IAsyncEnumerable<string> MyStringEnumerator();
async IAsyncEnumerable<string> MyFunction()
{
// ...do some code...
// Return all elements of the whole stream from the enumerator
await foreach(var s in MyStringEnumerator())
{
yield return s;
}
}
无论出于何种原因(由于分层设计),我的函数MyFunction
都想要调用MyStringEnumerator
,但随后无需干预即可产生所有内容。我必须继续编写这些foreach
循环才能做到这一点。如果是,IEnumerable
我会退回IEnumerable
. 如果它是 C++,我可以编写一个宏来完成它。
什么是最佳做法?