diff --git a/PkmnLibSharp/PointerWrapper.cs b/PkmnLibSharp/PointerWrapper.cs index e0dc841..0e7988c 100644 --- a/PkmnLibSharp/PointerWrapper.cs +++ b/PkmnLibSharp/PointerWrapper.cs @@ -5,7 +5,19 @@ namespace PkmnLibSharp { public abstract class PointerWrapper : IDisposable { - internal readonly IntPtr Ptr; + private readonly IntPtr _ptr; + internal IntPtr Ptr + { + get + { + if (_isDeleted) + { + throw new Exception("Pointer access after dispose detected. This is not legal, and will cause native exceptions."); + } + return _ptr; + } + } + private bool _isDeleted = false; private static readonly ConcurrentDictionary> Cached = @@ -13,7 +25,7 @@ namespace PkmnLibSharp protected PointerWrapper(IntPtr ptr) { - Ptr = ptr; + _ptr = ptr; var weakRef = new WeakReference(this); Cached.TryAdd(ptr, weakRef); }