C# 如何从触发的操作中获取结果,以便在包含方法中返回结果?
假设我有一个解析库,它允许在获取数据错误时传递操作(例如,在读取一行之后) 如下所示:C# 如何从触发的操作中获取结果,以便在包含方法中返回结果?,c#,.net,C#,.net,假设我有一个解析库,它允许在获取数据错误时传递操作(例如,在读取一行之后) 如下所示: public IEnumerable<string> Parse(string fileName) { // Initialize a parser reading the given fileName // ... myParser.Configuration.OnGettingDataError = (string error) => {
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();
}
}
public IEnumerable解析(字符串文件名)
{
//初始化读取给定文件名的解析器
// ...
myParser.Configuration.OnGettingDataError=(字符串错误)=>
{
//显然,我们不能返回到上面的包含方法。。。
收益率返回误差;
};
while(myParser.Read())
{
返回myParser.GetRecord();
}
}
如何获得包含方法返回的错误率?
我可以在这里应用某种模式吗?您确定要产生错误吗?但是你可以
- 将错误存储在属性/列表中,在每次
之后枚举它GetRecord
- 对我来说,仅仅是抛出,似乎是个例外
- 或结束枚举并检查最后一个错误李>
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();
}
}
public IEnumerable解析(字符串文件名)
{
var errors=新列表();
myParser.Configuration.OnGettingDataError=(字符串错误)=>errors.Add(错误);
while(myParser.Read())
{
返回myParser.GetRecord();
foreach(错误中的var错误)
收益率返回误差;
错误。清除();
}
}
注意:完全未经测试,有点可疑是的,我确信,在更广泛的背景下,我也认为这是一个挑战。