问题
I need to convert string to executable code. The string
is in foreach
statement.
foreach (InsuredItem _i in p.InsuredItems)
{
string formula = "(_i.PremiumRate/100)*SumAssured";
_i.Premium = (Execute formula);
}
The formula is loaded from setup. this is just a demonstration. I need to execute the string in foreach loop. Thanks.
回答1:
Assuming that your formula is valid C# code and that it uses a known set of local variables (so that you can create a "globals" type containing all of them), you should be able to use Roslyn scripting API to do this:
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 });
}
来源:https://stackoverflow.com/questions/42992476/dynamically-execute-string-as-code-in-c-sharp