微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 C# 中编写为字符串的逻辑二进制表达式的参数类型检查?

如何解决在 C# 中编写为字符串的逻辑二进制表达式的参数类型检查?

想象一个场景,您希望允许用户使用一组明确定义的参数将逻辑二进制表达式作为字符串提供给应用程序。例如:

"isSuperAdmin || userLevel > 5 && isAdmin"

系统正在使用 NReco 的 Lambda 解析器通过尝试解析来验证表达式:

Expression exp = lambdaParser.Parse("isSuperAdmin || userLevel > 5 && isAdmin");

如果表达式的结构有效,则上面返回一个表达式,否则抛出。但它不能对参数应用任何类型检查,例如isAdmin 必须是一个布尔值,但如果用户构造了以下内容会怎样:

    "isSuperAdmin || userLevel > 5 && isAdmin > 33"

这个表达式在语法上是正确的,可以解析,但它不会被正确评估,因为 isAdmin 是一个布尔值,而不是一个整数。有没有办法(不一定使用 NReco.LambdaParser)来推断表达式中每个参数的预期类型并对其进行验证?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。