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)); } }
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)); } }