Cómo: Escribir un visualizador
Actualización: noviembre 2007
Este tema hace referencia a:
Edición |
Visual Basic |
C# |
C++ |
Web Developer |
---|---|---|---|---|
Express |
Sólo administrado |
|||
Estándar |
Sólo administrado |
|||
Pro y Team |
Sólo administrado |
Leyenda de la tabla:
Se aplica |
|
No procede |
|
Comando o comandos ocultos de manera predeterminada. |
Puede escribir un visualizador personalizado para un objeto de cualquier clase administrada, excepto Object o Array.
La arquitectura de un visualizador del depurador tiene dos partes:
El lado depurador se ejecuta dentro del depurador de Visual Studio. El código del lado depurador crea y muestra la interfaz de usuario para el visualizador.
El lado depurado se ejecuta dentro del proceso que Visual Studio depura (el depurado).
El objeto de datos que desea visualizar (un objeto String, por ejemplo) existe en el proceso depurado. Por lo tanto, el lado depurado tiene que enviar el objeto de datos al lado depurador, que después puede mostrarlo mediante la interfaz de usuario creada.
El lado depurador recibe este objeto de datos que se visualizará desde un proveedor de objeto que implementa la interfaz IVisualizerObjectProvider. El lado depurado envía el objeto de datos a través del origen de objeto, el cual se deriva de VisualizerObjectSource. El proveedor de objetos también puede devolver los datos al origen del objeto, lo que permite escribir un visualizador que edite datos, además de mostrarlos. El proveedor de objetos puede ser reemplazado para comunicarse con el evaluador de expresiones y, por consiguiente, con el origen del objeto.
El lado depurado y el lado depurador se comunican entre sí a través de Stream. Se proporcionan métodos para serializar un objeto de datos en Stream y deserializar Stream en un objeto de datos.
El código del lado depurado se especifica utilizando el atributo DebuggerVisualizer (DebuggerVisualizerAttribute).
Para crear la interfaz de usuario del visualizador en el lado depurador, es necesario crear una clase que herede de DialogDebuggerVisualizer y reemplazar el método DialogDebuggerVisualizer.Show para mostrar la interfaz.
Puede utilizar IDialogVisualizerService para mostrar formularios Windows Forms, cuadros de diálogo y controles desde el visualizador.
La compatibilidad con los tipos genéricos es limitada. Puede escribir un visualizador para un destino que sólo es un tipo genérico si el tipo genérico es un tipo abierto. Esta restricción es igual que la restricción de uso del atributo DebuggerTypeProxy. Para obtener información detallada, vea Utilizar el atributo DebuggerTypeProxy.
Los visualizadores personalizados pueden tener consideraciones de seguridad. Vea Consideraciones de seguridad del visualizador.
Los siguientes procedimientos proporcionan una visión de alto nivel de los pasos necesarios para crear un visualizador. Para una explicación más detallada, vea Tutorial: Escribir un visualizador en C#.
Para crear el lado depurador
Utilice los métodos IVisualizerObjectProvider para obtener el objeto visualizado en el lado depurador.
Cree una clase que herede de DialogDebuggerVisualizer.
Reemplace el método DialogDebuggerVisualizer.Show para mostrar su interfaz. Utilice los métodos IDialogVisualizerService para mostrar formularios Windows Forms, cuadros de diálogo y controles como parte de la interfaz.
Aplique DebuggerVisualizerAttribute, dándole un visualizador (DialogDebuggerVisualizer).
Para crear el lado depurado
Aplique DebuggerVisualizerAttribute, dándole un visualizador (DialogDebuggerVisualizer) y un origen de objeto (VisualizerObjectSource). Si omite el origen del objeto, se utilizará un origen de objeto predeterminado.
Si desea que el visualizador pueda editar y mostrar objetos de datos, además de mostrarlos, será necesario invalidar los métodos TransferData o CreateReplacementObject de VisualizerObjectSource.
Vea también
Tareas
Cómo: Instalar un visualizador
Cómo: Comprobar y depurar un visualizador
Conceptos
Consideraciones de seguridad del visualizador