📜  c# 来自字符串的公式 - C# (1)

📅  最后修改于: 2023-12-03 14:59:42.703000             🧑  作者: Mango

C# 来自字符串的公式

简介

C# 中的公式通常是在代码中以硬编码的方式定义的,这样可能会造成代码的臃肿和混乱。本文将介绍如何从字符串中动态地创建和解析公式,这样可以更好地管理和维护公式,并且可以使用字符串来扩展现有的公式库。

步骤
1. 引用 Microsoft.CSharp.RuntimeBinder 命名空间
using Microsoft.CSharp.RuntimeBinder;
2. 定义公式字符串
string formula = "2 * (x + y)";
3. 创建 dynamic 对象
dynamic formulaEvaluator = null;
4. 编译公式字符串
try
{
    var c = new CSharpCodeProvider();
    var p = new CompilerParameters() { GenerateInMemory = true };
    var r = c.CompileAssemblyFromSource(p, string.Format(@"using System;namespace CSCodeEval{{public static class Evaluator{{public static Func<double, double, double> CompileFunc(string formula){{return (x, y) => {{return MathNet.Numerics.Evaluate.Parse(formula).Evaluate(true, x, y);}};}}}}}}}}"));
    var t = r.CompiledAssembly.GetType("CSCodeEval.Evaluator");
    var m = t.GetMethod("CompileFunc");
    formulaEvaluator = m.Invoke(null, new object[] { formula });
}
catch (Exception ex)
{
    Console.WriteLine(ex);
}
5. 使用公式
double x = 3;
double y = 4;
double result = formulaEvaluator(x, y);
Console.WriteLine("Result: " + result);
结论

本文介绍了如何从字符串中动态地创建和解析公式。使用本方法可以更好地管理和维护公式,并且可以使用字符串来扩展现有的公式库。