protected virtual int Callback(IDWSProgramInfo comObj) { try { var args = new DWSValue[this.Args.Count]; var argDefs = this.Args; for (int i = argDefs.Count - 1; i >= 0; i--) { args[i] = new DWSValue(comObj.GetVariable(argDefs[i].Name)); } object rv = _callback.DynamicInvoke(new DWSProgramContext(comObj), args); if (this.ReturnTypeName != null) { var result = new DWSValue(comObj.CreateTypedValue(this.ReturnTypeName)); result.Value = rv; comObj.SetResultValue(result.GetNativeValue()); } } catch (Exception ex) { return(Marshal.GetHRForException(ex.InnerException ?? ex)); } return(0); }
public DWSValue CreateTypedValue(string typeName) { return(new DWSValue(_info.CreateTypedValue(typeName))); }