Пример #1
0
 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);
 }
Пример #2
0
 public DWSProgramContext(IDWSProgramInfo info)
 {
     _info = info;
 }