Example #1
0
            public void Invoke(object sender, T args)
            {
                IntPtr           ThisPtr   = _nativeDelegate.ThisPtr;
                var              abiInvoke = Marshal.GetDelegateForFunctionPointer(_nativeDelegate.Vftbl.Invoke, Abi_Invoke_Type);
                IObjectReference __sender  = default;
                object           __args    = default;
                var              __params  = new object[] { ThisPtr, null, null };

                try
                {
                    __sender    = MarshalInspectable.CreateMarshaler(sender);
                    __params[1] = MarshalInspectable.GetAbi(__sender);
                    __args      = Marshaler <T> .CreateMarshaler(args);

                    __params[2] = Marshaler <T> .GetAbi(__args);

                    abiInvoke.DynamicInvokeAbi(__params);
                }
                finally
                {
                    MarshalInspectable.DisposeMarshaler(__sender);
                    Marshaler <T> .DisposeMarshaler(__args);
                }
            }
Example #2
0
 protected virtual IntPtr GetAbi(IObjectReference marshaler)
 {
     return((IntPtr)Marshaler <TDelegate> .GetAbi(marshaler));
 }