c# - 调用函数列表。如何获取它们的返回值并使用可能是已处置闭包的一部分的参数?
问题描述
我想调用一个函数列表。所有函数都返回一个布尔值。根据布尔值,我想打破循环调用函数列表中的每个函数。
这些函数需要一个参数,它是一个实体框架 DbContext,在“使用块”中实例化。有一个警告“访问已处置的关闭”
using (var context = new DbContext())
{
var fileDeletionProcedure = new List<Action>
{
() => _proc.deleteUsers(Id, context),
() => _proc.deleteAccounts(Id, context),
() => _proc.deleteMoney(Id, context)
}
foreach (var f in fileDeletionProcedure)
{
var exit = f.Invoke();
if (exit)
{
break;
}
}
}
我想做类似我提供的代码的事情,但Invoke()
返回无效,有人有建议吗?另外,我将如何处理有关已处置关闭的警告?
提前致谢。
解决方案
这只是一个警告,提醒您您可能做错了事情,显然这些操作将在上下文中执行并且不会被处理。
如果这是一个更清晰的警告,您可以使用评论禁用它
另请注意,操作不会返回结果,您需要使用Func<bool>
// ReSharper disable AccessToDisposedClosure
var fileDeletionProcedure = new List<Func<bool>>
{
() => Something(db)
};
// ReSharper restore AccessToDisposedClosure
foreach (var f in fileDeletionProcedure)
{
if (f.Invoke())
break;
}
推荐阅读
- python - FileNotFoundError:[Errno 2] 任务尝试保存文件时没有这样的文件或目录
- javascript - React JS - 映射函数 - 访问局部变量
- flutter - 如何从显示所有已安装应用程序的使用统计信息的列表中删除包名称?
- python - 尝试编写单行列表理解时出现缩进预期错误:if-else 变体
- git - 如何将目录更改为 Jenkins 中的克隆仓库?
- reactjs - React Redux REST API - 何时将数据重新加载到应用程序中
- python - 烧瓶和heroku
- dataframe - 过滤多个条件时,Julia dataframes 方法错误不明确
- primeng - primeNG ConfirmationService 和 MessageService 错误
- react-native - 如何在虚拟键盘后面保留一个按钮?