相关疑难解决方法(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#

我想将字符串表达式转换为真正的布尔表达式.

下面的表达式将是一个输入(字符串):

"(!A && B && C) || (A && !B && C) || (A && B && !C) || (A && B && C)"
Run Code Online (Sandbox Code Playgroud)

变量A,B和C将具有您的布尔值(true或false).

我如何转换字符串表达式,替换逻辑值并使用C#进行验证?

c# logic expression

6
推荐指数
1
解决办法
1859
查看次数

从String评估自定义布尔表达式

我有一串来自客户端的参数.一个例子可能是:

串PARAM = "(AND NAME.FULLNAME DOB.OPTIONAL)OR(ID和DOB.REQUIRED)OR(ID和国家)"

现在,我已经解析了所有传入的数据,并且具有代表每个参数的布尔值.

喜欢 :

bool name_FullName = true;
bool dob_Optional = false;
Run Code Online (Sandbox Code Playgroud)

等等

我正在尝试找到将客户参数表达式评估为True或False的最佳方法.

我想只是用他们的真/假bool替换参数.然后找到任何TRUE AND TRUE并删除它们,并替换TRUE AND FALSE为false.然后评估OR我离开的表达式.

输入后,这似乎是一个很好的方法.有没有人有我错过的更快的解决方案?

c# boolean-expression

1
推荐指数
1
解决办法
2058
查看次数

标签 统计

c# ×3

boolean-expression ×1

eval ×1

expression ×1

logic ×1

reflection ×1