public override ICalculateOutput Calc(ICalculateInpute input) { if (input.DataSource.Any()) { string script = input.Script; string[] patternDataList = ExpressionTask.GetPatternDataList(script); foreach (string pattern in patternDataList) { IMetaData md = input.DataSource.FirstOrDefault(t => t.TagId == pattern); if (md != null) { script = script.Replace($"[{pattern}]", md.TagValue.ToString()); } } object result = CSharpScript.EvaluateAsync(script).Result; return(new CalculateOutput(input.SessinId, DateTime.Now, new MetaData[] { new MetaData() { TagId = ResultId, TagTime = input.InputeDateTime, TagValue = result.ToString() } })); } else { return(null); } }