public object Call(params object[] parameters) { NetVariantList variants = null; if (parameters != null && parameters.Length > 0) { variants = new NetVariantList(); foreach (var parameter in parameters) { using (var variant = new NetVariant()) { Helpers.PackValue(parameter, variant); variants.Add(variant); } } } var result = Call(variants); variants?.Dispose(); if (result == null) { return(null); } object returnValue = null; Helpers.Unpackvalue(ref returnValue, result); result.Dispose(); return(returnValue); }
public object InvokeMethod(string methodName, params object[] parameters) { NetVariantList variantParameters = null; if (parameters != null && parameters.Length > 0) { variantParameters = new NetVariantList(); foreach (var parameter in parameters) { using (var variantParameter = NetVariant.From(parameter)) { variantParameters.Add(variantParameter); } } } using (variantParameters) using (var result = _qObject.InvokeMethod(methodName, variantParameters)) { if (result == null) { return(null); } object unpacked = null; Helpers.Unpackvalue(ref unpacked, result); result.Dispose(); return(unpacked); } }
public static NetVariantList From(params NetVariant[] variants) { var list = new NetVariantList(); foreach (var variant in variants) { list.Add(variant); } return(list); }
public NetVariant InvokeMethod(string methodName, NetVariantList parameters) { byte wasSuccessful = 0; var result = Interop.NetQObject.InvokeMethod(Handle, methodName, parameters?.Handle ?? IntPtr.Zero, ref wasSuccessful); if (wasSuccessful == 0) { // Dispose of the type before we throw using (result == IntPtr.Zero ? null : new NetVariant(result)) { } throw new Exception("Invoking method failed."); } return(result != IntPtr.Zero ? new NetVariant(result) : null); }
public NetVariant Call(NetVariantList parameters) { var result = Interop.NetJsValue.Call(Handle, parameters?.Handle ?? IntPtr.Zero); return(result != IntPtr.Zero ? new NetVariant(result) : null); }