What should be passed as the objectName when throwing an ObjectDisposedException?
.NetIdisposableObjectdisposedexception.Net Problem Overview
When implementing IDisposable, I undertand that every method that shouldn't be called after the object's been disposed should throw the ObjectDisposedException
. But what is the standard for the name object that should be passed to the exception's constructor?
.Net Solutions
Solution 1 - .Net
I believe the recommended practice is to throw the following:
throw new ObjectDisposedException(GetType().FullName);
Or including the check, these two lines of code at the top of each method that needs it (obviously not the Dispose
method itself):
if (this.disposed)
throw new ObjectDisposedException(GetType().FullName);
Might even be helpful to refactor this into a tiny method for usability.
Solution 2 - .Net
Even the .NET Framework itself isn't very consistent here.
David M. Kean (former developer on the FxCop team at Microsoft) added a comment to the MSDN documentation for the ObjectDisposedException:
> The typical usage of this type is something like the following: > [C#] private void CheckDisposed() { throw new ObjectDisposedException(GetType().FullName); }
Solution 3 - .Net
I don't believe there's a standard for that, I would return the type of the object along with the string content of a unique identifying field (a 'Primary Key' of sorts).