Ejemplo n.º 1
0
        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);
        }
Ejemplo n.º 2
0
            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);
                    }
            }
Ejemplo n.º 3
0
        public static NetVariantList From(params NetVariant[] variants)
        {
            var list = new NetVariantList();

            foreach (var variant in variants)
            {
                list.Add(variant);
            }

            return(list);
        }
Ejemplo n.º 4
0
        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);
        }
Ejemplo n.º 5
0
        public NetVariant Call(NetVariantList parameters)
        {
            var result = Interop.NetJsValue.Call(Handle, parameters?.Handle ?? IntPtr.Zero);

            return(result != IntPtr.Zero ? new NetVariant(result) : null);
        }