将String中写入的条件解析为C#代码并执行相同的操作

时间:2012-01-23 10:05:27

标签: c# asp.net string parsing

示例:

条件:

如果A> B那么

打印B

ELSE

打印A

此条件在SQL的表格的coloumn中写为字符串。

我想从表中获取此条件并将此条件转换为C#代码

如果(A> B)

{

打印B ...........

}

否则

{

打印A ...........

}

其中A和B是从解决方案传递的动态值 假设A = 10且B = 20 然后

执行将根据条件返回10或20的代码。

3 个答案:

答案 0 :(得分:0)

这取决于你想要做什么,但解决这个问题的一种可能方法是使用Microsoft.JScript程序集。虽然JScript与c#有点不同,但大部分语法都相同或相似。更重要的是,JScript基于全局范围,因此无需将您生成的代码包装在方法中。

您将在以下步骤中执行以下操作:

  • 将从数据库中获取的代码修改为有效的JScript(使用字符串方法,可能还有很多Regex)
  • 获取JScript编译器的实例
  • 将代码编译为程序集
  • 使用一些输入运行程序集。

但是由于这对于类型/程序集的创建(可能无法卸载)相当沉重,我建议(使用上面的方法)为jscript eval()函数编译一个简单的包装器,并简单地提供你的jscript到那个代码。那你就不用担心编译等了。

虽然在创建动态代码时要小心。整个.Net框架都可以使用,所以除非你完全信任条件的来源,或者限制编译的程序集,否则可能会发生讨厌的东西。

答案 1 :(得分:0)

您可以使用EmitCodeDOM生成动态代码,但最好说明为什么要保存它们,以便有更好的方法来重现它们。

答案 2 :(得分:0)

这里有一个答案,解释了如何重用每个Windows安装附带的Javascript引擎DLL:parse and execute JS by C#

它有一个样本,可以根据您的需要调整功能。