/// <summary> /// Creates a scripting property definitions /// </summary> private static SciterNativePropertyDef DefineScriptingProperty(PropertyInfo propertyInfo, ScriptingPropertyAttribute propertyAttr) { return(new SciterNativePropertyDef() { name = propertyAttr.Name ?? propertyInfo.Name, // Property callback implementation property = (IntPtr hvm, ref JsonValue p_data_slot, bool set, ref JsonValue retval) => { try { var instance = default(object); if (!propertyInfo.GetGetMethod().IsStatic) { instance = InstanceProtector.GetInstance(p_data_slot.GetNativeObject()); } retval = new JsonValue(); if (set) { propertyInfo.SetValue(instance, retval.GetValue(), null); } else { retval = new JsonValue(propertyInfo.GetValue(instance, null)); } } catch (Exception ex) { SciterHostApi.SciterNativeThrow(hvm, ex.Message); } } }); }
/// <summary> /// Calls scripting function /// </summary> public static object SciterCall(IntPtr hwnd, string functionName, params object[] args) { var jsonResult = new JsonValue(); var jsonParams = JsonValue.CreateJsonArray(args); try { SciterCall(hwnd, functionName, jsonParams.Length, jsonParams, out jsonResult); return(jsonResult.GetValue()); } finally { JsonValue.FreeJsonArray(jsonParams); jsonResult.Clear(); } }
/// <summary> /// Calls scripting function /// </summary> public static object SciterCall(IntPtr hwnd, string functionName, params object[] args) { var jsonResult = new JsonValue(); var jsonParams = JsonValue.CreateJsonArray(args); try { SciterCall(hwnd, functionName, jsonParams.Length, jsonParams, out jsonResult); return jsonResult.GetValue(); } finally { JsonValue.FreeJsonArray(jsonParams); jsonResult.Clear(); } }