public void SendCommand(IIotEntity entity, string commandName, params object[] args) { var type = entity.EntityType; var openCast2 = _commandDispatcherService.GetType().GetMethod(nameof(_commandDispatcherService.DispatchCommand)); var closeCase2 = openCast2.MakeGenericMethod(new[] { AssemblyUtils.GetType(type) }); var cmd = closeCase2.Invoke(_commandDispatcherService, new object[] { entity, commandName, args }); }
private void ExecuteCSharpRule(RuleInfo rule, IIotEntity entity) { var func = (Func <IIotEntity, bool>)rule.RuleCondition; if (func.Invoke(entity)) { rule.Action.Invoke(entity); } }
private void ExecuteLuaRule(RuleInfo rule, IIotEntity entity) { var lParser = new LambdaParser(); var context = new Dictionary <string, object> { { "entity", entity }, { "rule", rule } }; var bResult = (bool)lParser.Eval((string)rule.RuleCondition, context); if (bResult) { _logger.LogInformation($"Executing rule {rule.RuleName}"); rule.Action.Invoke(entity); } }
private void ParseRule(IIotEntity entity) { Rules.Where(r => r.EntityType == entity.GetType()).ToList().ForEach(r => { switch (r.RuleType) { case RuleTypeEnum.CSharp: ExecuteCSharpRule(r, entity); break; case RuleTypeEnum.Lambda: ExecuteLuaRule(r, entity); break; case RuleTypeEnum.Lua: ExecuteLuaRule(r, entity); break; } }); }