在 C# 中动态执行字符串作为代码

Dynamically execute string as code in C#

我需要将字符串转换为可执行代码。 stringforeach 语句中。

foreach (InsuredItem _i in p.InsuredItems)
{
    string formula = "(_i.PremiumRate/100)*SumAssured";
    _i.Premium = (Execute formula);
}

公式是从设置中加载的。这只是一个演示。我需要在 foreach 循环中执行字符串。 谢谢

假设您的公式是有效的 C# 代码并且它使用一组已知的局部变量(以便您可以创建一个包含所有这些变量的 "globals" 类型),您应该能够使用 Roslyn scripting API 这样做:

public class Globals
{
    public InsuredItem _i;
    public decimal SumAssured;
}

…

string formula = "(_i.PremiumRate/100)*SumAssured";
var script = CSharpScript.Create<decimal>(formula, globalsType: typeof(Globals))
    .CreateDelegate();

foreach (InsuredItem _i in p.InsuredItems)
{
    _i.Premium = await script(new Globals { _i = _i, SumAssured = SumAssured });
}