添加PreEvaluateVariableEnable配置,读取表达式/写入表达式中可以用变量名称获取全局变量的值,因性能问题默认关闭

This commit is contained in:
Diego2098
2024-03-27 22:15:41 +08:00
parent 390fe30a0d
commit 0fc75239a6
3 changed files with 9 additions and 1 deletions

View File

@@ -6,5 +6,8 @@
},
"ChannelThread": {
"CycleInterval": 20 //最小循环间隔
},
"ExpressionEvaluator": {
"PreEvaluateVariableEnable": false //启用后,读取表达式/写入表达式中可以用变量名称获取全局变量的值
}
}

View File

@@ -6,5 +6,8 @@
},
"ChannelThread": {
"CycleInterval": 20 //最小循环间隔
},
"ExpressionEvaluator": {
"PreEvaluateVariableEnable": false //启用后,读取表达式/写入表达式中可以用变量名称获取全局变量的值
}
}

View File

@@ -19,6 +19,7 @@ namespace ThingsGateway.Gateway.Application.Extensions;
public static class ExpressionEvaluatorExtension
{
private static readonly GlobalData GlobalData = App.RootServices.GetService<GlobalData>();
private static bool PreEvaluateVariableEnable = App.GetConfig<bool?>("ExpressionEvaluator:PreEvaluateVariable") ?? false;
/// <summary>
/// 计算表达式例如raw*100raw为原始值
@@ -41,7 +42,8 @@ public static class ExpressionEvaluatorExtension
//
ExpressionEvaluator expressionEvaluator = new();
expressionEvaluator.OptionScriptNeedSemicolonAtTheEndOfLastExpression = false;
expressionEvaluator.PreEvaluateVariable += Evaluator_PreEvaluateVariable;
if (PreEvaluateVariableEnable)
expressionEvaluator.PreEvaluateVariable += Evaluator_PreEvaluateVariable;
expressionEvaluator.Assemblies.Add(typeof(Newtonsoft.Json.JsonConverter).Assembly);
expressionEvaluator.Namespaces.Add("Newtonsoft.Json.Linq");
expressionEvaluator.Namespaces.Add("Newtonsoft.Json");