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); } }
protected virtual IntPtr GetAbi(IObjectReference marshaler) { return((IntPtr)Marshaler <TDelegate> .GetAbi(marshaler)); }