相关疑难解决方法(0)

如何动态评估C#表达式?

我想做相当于:

object result = Eval("1 + 3");
string now    = Eval("System.DateTime.Now().ToString()") as string
Run Code Online (Sandbox Code Playgroud)

在Biri的链接之后,我得到了这个片段(修改后删除了过时的方法ICodeCompiler.CreateCompiler():

private object Eval(string sExpression)
{
    CSharpCodeProvider c = new CSharpCodeProvider();
    CompilerParameters cp = new CompilerParameters();

    cp.ReferencedAssemblies.Add("system.dll");

    cp.CompilerOptions = "/t:library";
    cp.GenerateInMemory = true;

    StringBuilder sb = new StringBuilder("");
    sb.Append("using System;\n");

    sb.Append("namespace CSCodeEvaler{ \n");
    sb.Append("public class CSCodeEvaler{ \n");
    sb.Append("public object EvalCode(){\n");
    sb.Append("return " + sExpression + "; \n");
    sb.Append("} \n");
    sb.Append("} \n");
    sb.Append("}\n");

    CompilerResults cr = c.CompileAssemblyFromSource(cp, sb.ToString());
    if (cr.Errors.Count > 0)
    {
        throw …
Run Code Online (Sandbox Code Playgroud)

c# reflection eval

49
推荐指数
3
解决办法
9万
查看次数

在运行时从代码文件执行c#代码

我有一个包含按钮的WPF C#应用程序.

按钮单击的代码写在单独的文本文件中,该文件将放在应用程序运行时目录中.

我想在单击按钮时执行放置在文本文件中的代码.

知道怎么做吗?

.net c# runtime csharpcodeprovider

45
推荐指数
3
解决办法
6万
查看次数

是否可以在.NET中运行时编译和执行新代码?

注意:数学表达式评估不是这个问题的焦点.我想在.NET中运行时编译和执行新代码. 话虽如此...

我想允许用户在文本框中输入任何等式,如下所示:

x = x / 2 * 0.07914
x = x^2 / 5
Run Code Online (Sandbox Code Playgroud)

并将该等式应用于传入的数据点.输入数据点由x表示,每个数据点由用户指定的等式处理.我多年前做过,但我不喜欢这个解决方案,因为它需要为每次计算解析等式的文本:

float ApplyEquation (string equation, float dataPoint)
{
    // parse the equation string and figure out how to do the math
    // lots of messy code here...
}
Run Code Online (Sandbox Code Playgroud)

当您处理大量数据点时,这会引入相当多的开销.我希望能够在飞行中将方程转换为函数,这样它只需要解析一次.它看起来像这样:

FunctionPointer foo = ConvertEquationToCode(equation);
....
x = foo(x);  // I could then apply the equation to my incoming data like this
Run Code Online (Sandbox Code Playgroud)

函数ConvertEquationToCode将解析方程并返回指向应用适当数学的函数的指针.

该应用程序基本上是在运行时编写新代码.这可能与.NET有关吗?

.net c# runtime compilation

33
推荐指数
4
解决办法
2万
查看次数

标签 统计

c# ×3

.net ×2

runtime ×2

compilation ×1

csharpcodeprovider ×1

eval ×1

reflection ×1