public static TManaged?PointerToInstance(TNative *pointer) { if (pointer == null) { return(null); } if (s_instances.TryGetValue((IntPtr)pointer, out var weakRef) && weakRef.TryGetTarget(out var value)) { return(value); } value = new TManaged { Pointer = Native.CheckPointer(pointer) }; s_instances[(IntPtr)pointer] = new WeakReference <TManaged>(value); return(value); }
public static TManaged PointerToInstanceNotNull(TNative *pointer) => PointerToInstance(pointer) ?? throw new SdlException();
/// <inheritdoc/> public virtual void Dispose() { _ = s_instances.Remove((IntPtr)Pointer); Pointer = null; }