【问题标题】:How to easily validate if an input string is valid lambda expression?如何轻松验证输入字符串是否是有效的 lambda 表达式?
【发布时间】:2012-11-16 19:30:14
【问题描述】:

例如:

Validate("items.Select(item => item.ToLower())")

将返回 True,而

Validate("var n=5;")

将返回 False。

上下文是我想创建一个允许用户通过 lambda 表达式操作其数据的应用程序。如果用户输入了一个有效的 lambda 表达式,程序就会执行它。否则,它应该会失败。

【问题讨论】:

  • 上下文是什么?这将如何使用?为什么它需要是 LINQ 表达式的字符串版本而不是 LINQ 表达式?只是想达到目的,这样我才能更好地理解解决方案。
  • 仅供参考,这不是“Linq”表达式,而是 Lamba 表达式。
  • 没有一些真实的上下文这个问题是无法解决恕我直言
  • @zer0ne 这些是 LINQ 上下文中的 Lambda 表达式。然而,它们绝不限于 LINQ 查询。

标签: c# .net linq lambda


【解决方案1】:

我建议保持简单并尝试执行它。 如果它无效,它无论如何都会在几毫秒后失败。

它还处理语法上有效但因其他原因失败的表达式。

如果您选择采用这种方法,则只需使用 Dynamic Linq 库即可。

【讨论】:

  • "无论如何它都会在几毫秒后失败" LINQValidate("while(true){var s=\"good luck\"";}");
  • 如果他必须处理邪恶的用户,他可以在一个单独的线程上执行它,如果时间太长就将其杀死。
  • 好的。 LINQValidate("System.Diagnostics.Process.Start(\"cmd format c:\");");
猜你喜欢
  • 2011-12-06
  • 2013-06-19
  • 2014-07-03
  • 1970-01-01
  • 2023-04-09
  • 2016-03-05
  • 2021-01-26
  • 2013-03-04
相关资源
最近更新 更多