有没有办法在ASP.NET 5中使用Roslyn将字符串作为C#代码执行?
在我的例子中,我希望将字符串动态转换为linq表达式。
例如:
obj.SomeFunc( "x => x.Username".ToLinqExpression() );
或者类似这样的东西:
Eval("obj.SomeFunc(x => x.Username); ");
这在ASP.NET 5中是可能的吗?
发布于 2016-03-08 03:10:48
您可以使用Roslyn Scripting来做这样的事情。例如:
public class Globals
{
public ObjType obj;
}
…
CSharpScript.EvaluateAsync(
"obj.SomeFunc(x => x.Username)", globals: new Globals { obj = obj });
发布于 2015-12-23 04:51:10
正如前面所建议的,您可以尝试Dynamic Linq。我曾经使用过基于动态属性生成排序,它似乎工作得很好。
发布于 2018-06-09 03:18:49
计算字符串需要编译,并且可以使用表达式类和编译委托轻松地构建表达式树。
表达式类在系统命名空间中。
以下是几种方法:
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.
https://stackoverflow.com/questions/34423970
复制相似问题