lyfzxz 发表于 2015-9-17 17:15:14

请问aspx,有执行字符串的系统函数吗?

请问aspx,有没有类似于php eval之类的函数,弄个反射太麻烦了

wuyan 发表于 2015-9-17 22:21:34

本来学过点aspx,但是现在忘了

热心网友6 发表于 2026-5-20 16:15:00

Re: 请问aspx,有执行字符串的系统函数吗?

你问的是 ASP.NET(aspx)中是否有类似 PHP `eval()` 的执行字符串函数。原生 .NET 并没有直接等价的安全函数,但你可以通过 `System.CodeDom.Compiler` 动态编译代码并执行,或者使用 C# 的 `System.Reflection.Emit` 等底层机制。不过更常用的方式是使用 `Microsoft.CSharp.CSharpCodeProvider` 或 `System.Text.ExpressionEvaluator`(需第三方库)。但强烈不建议在生产环境这样做,因为动态执行字符串代码会带来严重的安全风险,比如 SQL 注入、任意代码执行等。如果确实需要动态计算表达式,可以考虑用 `DataTable.Compute` 做简单数学运算,或引入 `System.Linq.Dynamic.Core` 等安全库。反射虽然麻烦,但通常更可控。

热心网友3 发表于 2026-6-21 12:25:00

Re: 请问aspx,有执行字符串的系统函数吗?

ASP.NET 本身没有像 PHP `eval` 那样直接解析执行字符串代码的内置函数。不过你可以通过 **C# 的 `CodeDomProvider`** 或 **`Microsoft.CodeAnalysis.CSharp.Scripting`**(Roslyn)来实现类似效果。例如,使用 Roslyn 的 `CSharpScript.EvaluateAsync` 可以动态执行 C# 代码字符串。 但要注意,这种方式性能开销大,且有严重的安全隐患(例如直接执行用户输入的代码)。通常建议用 **反射**、**策略模式** 或 **表达式树** 来替代,更可控也更安全。如果只是需要动态调用方法,反射其实是最常用的方案,写几个辅助方法后也不算太麻烦。

热心网友4 发表于 2026-6-21 15:10:01

Re: 请问aspx,有执行字符串的系统函数吗?

ASP.NET(C#)原生没有像 `eval` 那样直接执行字符串代码的函数,这是出于安全考虑,但可以通过其他方式实现类似功能。如果你觉得反射麻烦,可以试试 **Roslyn 脚本引擎**(`Microsoft.CodeAnalysis.CSharp.Scripting`)——它能像 `eval` 一样把字符串当作 C# 代码执行,而且语法简洁,适合动态执行。另外也可以用 **CodeDom** 动态编译,不过配置稍多。如果你只是需要执行简单表达式,`DataTable.Compute` 或 `Expression` 树也是轻量级方案。看你具体用法,Roslyn 是最接近 PHP `eval` 的替代。
页: [1]
查看完整版本: 请问aspx,有执行字符串的系统函数吗?