public virtual void Execute(IBaseDelegateExecution execution) { IList <string> list; var test = execution.GetVariable("listVar"); //TODO 待优化 if (test is UntypedValueImpl) { list = (IList <string>)(((UntypedValueImpl)test).Value); } else { list = (IList <string>)execution.GetVariable("listVar"); } execution.RemoveVariable("listVar"); // implicitly update the previous list, should update the variable value list.Add(NEW_ELEMENT); }