¿Se puede configurar Visual Studio 2008 para darme una advertencia cuando se me olvida deshacerme de un objeto que implementa IDisposable?¿Puede Visual Studio advertirme cuando me olvido de disponer de un objeto IDisposable?
Respuesta
Visual Studio, por sí mismo no tiene esta característica, pero con CodeRush puede tener advertencias y refactorizaciones tiempo de diseño para insertar el uso de bloques donde sea necesario.
No creo que se pueda hacer en tiempo de compilación.
Sin embargo, se puede hacer en tiempo de ejecución.
He creado una clase abstracta 'Desechable' (que implementa IDisposable e implementa el patrón Desechable). En el finalizador, emite un Assert cuando se llama al finalizador, y el objeto no se ha eliminado.
he basado esto en un artículo de Ian Griffiths:
http://www.interact-sw.co.uk/iangblog/2004/04/26/yetmoretimedlocking
yo argumentaría en contra de tener una clase base para el manejo de la eliminación . Dado que .NET es de herencia única, esto lo encadena a una cadena de herencia muy estricta que requiere que su DisposeBase esté en la parte superior. –
además de que podría simplemente usar "System.ComponentModel.Component" –
No estoy seguro de si está usando C# o VB, pero en C#, la "mejor práctica" para manejar objetos de tipo IDisposable es colocar el código en un bloque de uso.
"La instrucción using permite al programador especificar cuándo los objetos que usan recursos deben liberarlos. El objeto provisto a la instrucción using debe implementar la interfaz IDisposable. Esta interfaz proporciona el método Dispose, que debe liberar los recursos del objeto." - MSDN Link
HTH,
-Dan
Esto de ninguna manera responde la pregunta. –
¿Se puede configurar Visual Studio 2008 para que me avise si creo un objeto que implementa IDisposable y luego me olvido de encerrarlo dentro de un bloque de uso? – ChrisW
Si enciende FxCop diseño de las reglas que le dirá cuando no implementar IDisposable y tiene miembros que implementan IDisposable, así:
class Program
{
private DataTable NotDisposed;
public Program()
{
NotDisposed = new DataTable();
}
static void Main()
{
}
}
FxCop es ideal para este tipo de cosas. 'Por supuesto, sería bueno si el estudio visual realmente te advirtiera si cometiste un error al usar (o implementando IDisposable), pero diablos. –
- 1. ¿Cuándo puedo disponer de un control WPF IDisposable, p. WindowsFormsHost?
- 2. "objeto se puede disponer de más de una vez" error
- 3. Cuando para disponer objeto WCF con el patrón asincrónico
- 4. Uso del diseñador de Visual Studio - "Referencia de objeto no configurada para una instancia de un objeto" (Visual Studio 2008)
- 5. Visual Studio no me permite usar ciertos nombres de variable
- 6. ¿Por qué puedo probar un genérico para nulo cuando puede no ser anulable o puede no ser un objeto?
- 7. ¿Por qué no se puede usar el objeto COM IDisposable?
- 8. Modo de organización de Emacs: cómo ajustar el reloj anterior si me olvido de marcar
- 9. Visual Studio no puede abrir nuevo proyecto
- 10. ¿Cómo disponer una lista de objetos desechables?
- 11. Visual Studio 2010 no me permite depurar mi código
- 12. ¿Cómo deshacerse de un IDisposable en C++ administrada
- 13. Visual Studio 2012 no puede crear proyecto
- 14. ¿Qué significa cuando Visual Studio me dice que mi proyecto no es compatible con el código?
- 15. ¿Cómo dejo de Visual Studio desde la inserción de "objeto" cuando tecleo "nueva {"
- 16. Visual Studio 2010 no puede encontrar iostream
- 17. Usando la instrucción 'using' de C# con la función de un objeto personalizado, ¿necesito implementar IDisposable?
- 18. aplicación explícita de IDisposable
- 19. Error de Visual Studio - "La operación no se puede completar"
- 20. Visual Studio 2010 no puede abrir una solución de 2010 que Visual Studio 2012 modificó
- 21. ¿Cómo puedo obtener Visual Studio para que me avise si una compilación tiene éxito?
- 22. ¿Cómo creo impulso con Visual Studio 2008 cuando tengo instaladas varias versiones de Visual Studio?
- 23. No se puede asignar un objeto a un objeto volátil
- 24. Dónde ponerlo try/catch cuando use IDisposable
- 25. ¿Se puede instalar Visual Studio 11 Beta al lado de Visual Studio 2010?
- 26. La instalación de Visual Studio 2010 SDK no puede encontrar Visual Studio
- 27. Crear un proyecto de Visual Studio programáticamente
- 28. Visual Studio no puede crear un sitio web en IIS
- 29. de control WPF que contiene un miembro de IDisposable
- 30. Visual Studio - no puede quitar configuraciones de proyectos
ReSharper hará esto también. –
CodeRush Xpress está incluso disponible GRATIS: http://www.devexpress.com/Products/Visual_Studio_Add-in/CodeRushX/ –
FxCop y Genderme también lo harán (ambos gratis) – Paco