Reputation: 57
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.
Upvotes: 2
Views: 7329
Reputation: 244767
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 });
}
Upvotes: 7