我想知道是否有一种方法可以编写一个函数来“通过”一个 IAsyncEnumerable ......也就是说,该函数将调用另一个 IAsyncEnumerable 函数并产生所有结果而无需编写 aforeach来做到这一点?
我发现自己经常写这个代码模式。下面是一个例子:
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;
}
}
Run Code Online (Sandbox Code Playgroud)
无论出于何种原因(由于分层设计),我的函数MyFunction都想调用,MyStringEnumerator但随后无需干预即可生成所有内容。我必须继续编写这些foreach循环才能做到这一点。如果是,IEnumerable我会返回IEnumerable. 如果是 C++,我可以写一个宏来做到这一点。
什么是最佳实践?
我正在处理一个复杂的应用程序,它有时会在我们的日志文件中产生以下内容:
Exception of type 'System.Exception' was thrown
Run Code Online (Sandbox Code Playgroud)
我可以找到异常的原因,但我的问题是文本的确切措辞来自哪里。
单词Exception of typeandwas thrown不在我们的应用程序中,但会出现在 google 搜索各种应用程序中,因此必须有一个系统组件将这些文本放在一起。
这不是ToString()异常对象的标准,如果我编写一个只是抛出的应用程序,应用程序的命令行输出不包含该文本。
感觉就像一些标准组件正在捕获底层异常并在添加这些词的情况下重新抛出它。如果我知道发生了什么,那么追踪潜在问题的原因就会容易得多。
有任何想法吗?