Dynamic Expresso 試用紀錄
dynamic expression, 動態運算式, 動態表達式,
引言
關鍵知識
試用紀錄
Eval
@using DynamicExpresso
<MudPaper role="panel">
<MudText Typo=Typo.h6>Eval</MudText>
<MudNumericField T="decimal" Label="foo" @bind-Value=foo />
<MudNumericField T="decimal" Label="bar" @bind-Value=bar />
<MudTextField Label="expression" @bind-Value=expression />
<MudButton Variant=Variant.Filled Color=Color.Primary OnClick=HandleEval>Eval</MudButton>
<MudText>message: @message</MudText>
</MudPaper>
@code {
string message = string.Empty;
decimal foo = 987654321m;
decimal bar = 7654321m;
string expression = "foo - bar";
async Task HandleEval()
{
try
{
message = "計算中...";
await Task.Yield();
//------ 關鍵程式碼 eval & apply
var result = new Interpreter().Eval(expression,
new Parameter("foo", foo),
new Parameter("bar", bar));
message = $"{result}";
}
catch (Exception ex)
{
message = $"出現例外: " + ex.GetType().Name + ", " + ex.Message;
}
}
}Parse & Invoke
Last updated