c# - 如何调用函数(表达式> 谓词)与一个什么都不做的谓词?
问题描述
我有这个方法:
public async Task<List<T>> GetDocumentItemsAsync<T>(Expression<Func<T, Boolean>> predicate) where T : class
我正在调用这样的方法:
var Views = await cosmosManager.GetDocumentItemsAsync<LogViews>(x => x.Activity == "Crash");
现在有一种情况,我根本不想进行任何检查,也不想检查 Activity 的值。
有没有一种方法可以调用该方法,因为当我尝试将参数留空时会收到一条错误消息。
解决方案
您可以使用空对象模式。提供和重载看起来像这样:
public async Task<List<T>> GetDocumentItemsAsync<T>() where T : class
{
return await GetDocumentItemsAsync<T>(t => true);
}
不幸的是,您不能只将原始参数默认为 t => true,因为 lambda 不是编译时间常数。
我假设您希望默认为true
,但同样您也可以做到false
。
推荐阅读
- go - 想要将映射映射到切片结构
- react-native - React-Navigation:一旦父屏幕重新渲染,如何更改传递给子屏幕的参数?
- git - 从本地提交中检索意外删除的函数到 git
- javafx - FxmlLoader.load() 方法返回 InvocationTargetException
- javascript - 使用Angular2或moment js或javascript从给定的日期对象检测时区缩写
- python - 如何以编程方式访问 Pep8 错误代码列表
- google-cloud-platform - 无法使用 cloudbuild.yaml 配置机密以部署到 cloudrun 以实现对话流 basicauth
- python - 在棉花糖中使用 `fields.Nested` 只嵌套部分模式
- excel - Excel 在手动创建 XSLX 文件时表现异常
- javascript - 排序字符串数组返回不正确的结果