gpt4 book ai didi

c# - 如何从触发的操作中获取结果,以便在包含方法中产生返回结果?

转载 作者:行者123 更新时间:2023-11-30 22:58:39 25 4
gpt4 key购买 nike

假设我有一个解析库,允许在获取数据错误时传递一个操作(例如,在读取一行之后)。

类似下面的内容:

public IEnumerable<string> Parse(string fileName)
{
// Initialize a parser reading the given fileName
// ...
myParser.Configuration.OnGettingDataError = (string error) =>
{
// Obviously we cannot yield return to the containing method above...
yield return error;
};
while(myParser.Read())
{
yield return myParser.GetRecord();
}
}

如何获取包含方法返回的错误 yield ?有没有一种模式可以应用到这里?

最佳答案

您确定要产生错误吗?但是你可以

  • 将错误存储在属性/列表中,在每次 GetRecord 之后枚举它。
  • 只是throw,对我来说似乎很特别
  • 或者结束枚举并检查最后一个错误。

这些似乎是你唯一的选择

更新

不完全确定这是否是您所追求的,但是...

public IEnumerable<string> Parse(string fileName)
{
var errors = new List<string>();
myParser.Configuration.OnGettingDataError = (string error) => errors.Add(error);

while (myParser.Read())
{
yield return myParser.GetRecord();
foreach(var error in errors)
yield return error;
errors.Clear();
}
}

注意:完全未经测试,有点怀疑

关于c# - 如何从触发的操作中获取结果,以便在包含方法中产生返回结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52905869/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com