Exemplo n.º 1
0
 public static JavaScriptValue PropertySetter(JavaScriptValue callee,
                                              [MarshalAs(UnmanagedType.U1)] bool isConstructCall,
                                              [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] JavaScriptValue[] arguments,
                                              ushort argumentCount,
                                              IntPtr callbackData)
 {
     try
     {
         var that = (PropertyProxy)GCHandle.FromIntPtr(callbackData).Target;
         if (that.setdg == null)
         {
             var settermethod = that.pi.GetSetMethod();
             that.setdg = (obj, val) =>
             {
                 var valv = FunctionWrapper.Conv(val, that.pi.PropertyType);
                 if (settermethod.IsStatic)
                 {
                     settermethod.Invoke(null, new object[] { valv });
                 }
                 else
                 {
                     var objv = FunctionWrapper.Conv(obj, that.pi.DeclaringType);
                     settermethod.Invoke(objv, new object[] { valv });
                 }
             };
         }
         that.setdg(arguments[0], arguments[1]);
         return(arguments[1]);
     }
     catch (Exception e)
     {
         return(ExceptionUtil.SetJSException(e));
     }
 }
Exemplo n.º 2
0
 public static JavaScriptValue FieldSetter(JavaScriptValue callee,
                                           [MarshalAs(UnmanagedType.U1)] bool isConstructCall,
                                           [MarshalAs(UnmanagedType.LPArray, SizeParamIndex = 3)] JavaScriptValue[] arguments,
                                           ushort argumentCount,
                                           IntPtr callbackData)
 {
     try
     {
         var that = (FieldProxy)GCHandle.FromIntPtr(callbackData).Target;
         if (that.setdg == null)
         {
             that.setdg = (obj, val) =>
             {
                 var valv = FunctionWrapper.Conv(val, that.fi.FieldType);
                 if (that.fi.IsStatic)
                 {
                     that.fi.SetValue(null, valv);
                 }
                 else
                 {
                     var objv = FunctionWrapper.Conv(obj, that.fi.DeclaringType);
                     that.fi.SetValue(objv, valv);
                 }
             };
         }
         that.setdg(arguments[0], arguments[1]);
         return(arguments[1]);
     }
     catch (Exception e)
     {
         return(ExceptionUtil.SetJSException(e));
     }
 }