【发布时间】:2017-02-24 19:47:17
【问题描述】:
我有一个Dictionary<string, Func<bool, object>> 我想有条件地循环遍历字典并仅在bool == true 时添加“对象”。
但我不确定如何将pair.Value() 作为布尔值传递。
foreach (KeyValuePair<string, Func<bool, object>> pair in parameters)
{
//error pair.Value(), Delegate Func has 1 parameter(s) but is invoked with 0 arguments.
//pair.Value(true) obviously works, but defeats the purpose
if (pair.Value() != null)
cmd.Parameters.AddWithValue(pair.Key, pair.Value());
}
}
我应该使用Expression<Func<bool, object>> 并编译/评估布尔值吗?如果有,怎么做?
【问题讨论】:
-
您确切地展示了如何在您的问题中向代表传递一个布尔值,所以很明显您确实知道该怎么做。
-
您的要求有点令人困惑。如果某事属实,您是否尝试添加对象的条目,
-
Func<bool, object>中没有bool:它表示一个以布尔值作为输入的函数 -
是的,我想在 pair.Value(bool) 表达式中评估该 bool。这有意义吗?
-
@Robert4Real 不,评估它作为参数接受的布尔值是没有意义的。在您提供布尔值之前没有布尔值,这意味着您必须已经从委托以外的某个来源对其进行了评估。你从评估委托中得到的是
object,而不是bool。
标签: c# dictionary lambda expression expression-trees