gpt4 book ai didi

c# - 使用 Func Delegate 进行错误检查

转载 作者:行者123 更新时间:2023-11-30 17:20:54 26 4
gpt4 key购买 nike

所以我最近学会了使用 Func Delegate 和 Lambda 表达式来避免代码中的多个 if 语句验证的新技巧。

所以代码看起来像

 public static void SetParameters(Dictionary<string,object> param)
{
Func<Dictionary<string, object>, bool>[] eval =
{
e => e != null ,
e => e.Count ==2 ,
e => e.ContainsKey("Star"),
e => e.ContainsKey("Wars")
};

var isValid = eval.All(rule => rule(param));

Console.WriteLine(isValid.ToString());
}

但我的下一步是我也想做一些错误检查。所以例如如果在我之前的示例中计数 !=2 我想编写构建一些错误集合以进一步了解更清晰的异常。

所以我一直想知道如何使用类似的 Func 和 Lamdba 符号来实现它?。

我确实想出了我的规则检查类

public class RuleChecker
{
public Dictionary<string, object> DictParam
{
get;
set;
}

public string ErrorMessage
{
get;
set;
}
}

有人可以提供帮助吗?

最佳答案

你可以这样做:

        List<string> errors = new List<string>();
Func<Dictionary<string, object>, bool>[] eval =
{
e => { bool ret = e != null; if (!ret) errors.Add("Null"); return ret; },

然而,更优雅的解决方案是

        List<string> errors = new List<string>();
Func<bool, string, List<string>, bool> EvaluateWithError = (test, message, collection) =>
{
if (!test) collection.Add(message); return test;
};

Func<Dictionary<string, object>, bool>[] eval =
{
e => EvaluateWithError(e != null, "Null", errors),

关于c# - 使用 Func Delegate 进行错误检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3921257/

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