una tipo inició excepción disposed .net idisposable objectdisposedexception

.net - inició una excepción de tipo system objectdisposedexception



¿Qué se debe pasar como el nombre de objeto cuando se lanza una excepción de objeto de objeto? (3)

Al implementar IDisposable, entiendo que todo método que no deba llamarse después de que se haya eliminado el objeto debería lanzar la ObjectDisposedException . Pero, ¿cuál es el estándar para el objeto de nombre que debe pasarse al constructor de la excepción?


Creo que la práctica recomendada es lanzar lo siguiente:

throw new ObjectDisposedException(GetType().FullName);

O incluyendo el cheque, estas dos líneas de código en la parte superior de cada método que lo necesita (obviamente no el método Dispose ):

if (this.disposed) throw new ObjectDisposedException(GetType().FullName);

Incluso podría ser útil refactorizar esto en un método pequeño para la usabilidad.


Incluso el .NET Framework en sí no es muy consistente aquí.

David M. Kean (ex desarrollador en el equipo de FxCop en Microsoft) agregó un comentario a la documentación de MSDN para la excepción ObjectDisposedException :

El uso típico de este tipo es algo como lo siguiente:

[C#] private void CheckDisposed() { throw new ObjectDisposedException(GetType().FullName); }


No creo que haya un estándar para eso, devolvería el tipo de objeto junto con el contenido de la cadena de un campo de identificación único (una ''Clave principal'' de tipo).