首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在ASP.NET 5中将字符串作为代码(eval)动态执行

在ASP.NET 5中将字符串作为代码(eval)动态执行
EN

Stack Overflow用户
提问于 2015-12-23 04:30:48
回答 3查看 2.2K关注 0票数 1

有没有办法在ASP.NET 5中使用Roslyn将字符串作为C#代码执行?

在我的例子中,我希望将字符串动态转换为linq表达式。

例如:

代码语言:javascript
复制
obj.SomeFunc( "x => x.Username".ToLinqExpression() );

或者类似这样的东西:

代码语言:javascript
复制
Eval("obj.SomeFunc(x => x.Username); ");

这在ASP.NET 5中是可能的吗?

EN

回答 3

Stack Overflow用户

发布于 2016-03-08 03:10:48

您可以使用Roslyn Scripting来做这样的事情。例如:

代码语言:javascript
复制
public class Globals
{
    public ObjType obj;
}

…

CSharpScript.EvaluateAsync(
    "obj.SomeFunc(x => x.Username)", globals: new Globals { obj = obj });
票数 2
EN

Stack Overflow用户

发布于 2015-12-23 04:51:10

正如前面所建议的,您可以尝试Dynamic Linq。我曾经使用过基于动态属性生成排序,它似乎工作得很好。

票数 0
EN

Stack Overflow用户

发布于 2018-06-09 03:18:49

计算字符串需要编译,并且可以使用表达式类和编译委托轻松地构建表达式树。

表达式类在系统命名空间中。

以下是几种方法:

代码语言:javascript
复制
static Func<int, int, int, int, int> delInt = (i, j, k, l) => i + j * k - l;
int rslt1 = delInt(2, 3, 4, 5);  // evaluates lambda and returns int
static Func<int> delInt1 = () => 2 + 3 * 4 - 5;  // type the expression after => instead of assigning it to a string.
int rslt2 = delInt1();   // takes no parameters and returns int result.
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34423970

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档