在 C# 中动态执行字符串作为代码
Dynamically execute string as code in C#
我需要将字符串转换为可执行代码。 string
在 foreach
语句中。
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 });
}
我需要将字符串转换为可执行代码。 string
在 foreach
语句中。
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 });
}