Como: gravar um visualizador
Você pode escrever um visualizador personalizado para um objeto de qualquer classe gerenciada exceto para Object ou Array.
A arquitetura de um visualizador de depurador tem duas partes:
O lado do depurador executa com o depurador de Visual Studio.O código do debugger-side cria e exibe a interface do usuário para seu visualisador.
O debuggee side é executado dentro do processo de depuração de Visual Studio (o debuggee).
O objeto de dados que você deseja visualizar (um objeto de cadeia de caracteres, por exemplo) existe no processo de depuração.Assim, o debuggee side tem que enviar esse objeto de dados para o lado do depurador, que pode exibí-lo usando uma interface de usuário que você criar.
O debuggee side recebe esse objeto de dados para ser visualizado de um provedor de objeto que implementa o IVisualizerObjectProvider interface.O lado a ser depurado envia o objeto de dados por meio de origem do objeto, que é derivada de VisualizerObjectSource.O provedor de objeto também pode enviar dados de volta para o objeto de fonte, que permite gravar um visualizador que edita, bem como exibe, dados.O provedor de objeto pode ser substituído para falar para o avaliador da expressão e, portanto, para o objeto de fonte
O debuggee side e debugger side se comunicam entre si por meio de Stream.Métodos são fornecidos para serializar um objeto de dados em um Stream e desserializar o Stream volta para um objeto de dados.
O código do debuggee é especificado usando o atributo DebuggerVisualizer (DebuggerVisualizerAttribute).
Para criar a interface do usuário visualizador no lado do depurador, você deve criar uma classe que herda de DialogDebuggerVisualizer e substituir o DialogDebuggerVisualizer.Show método para exibir a interface.
Você pode usar IDialogVisualizerService para exibir Windows forms, caixas de diálogo e controles de seu visualizador.
Suporte para tipos genéricos é limitado.Você pode escrever um visualizador para um destino que é um tipo genérico somente se o tipo genérico é um tipo aberto.Essa restrição é igual a restrição ao uso de DebuggerTypeProxy atributo.Para obter detalhes, consulte:Usando o atributo DebuggerTypeProxy.
Visualizadores personalizados podem ter considerações de segurança.Consulte Considerações de segurança do Visualizador.
Os procedimentos abaixo, dar uma visão geral do que é preciso criar um visualisador.Para obter uma explicação mais detalhada, consulte Passo a passo: Writing a Visualizer em C#.
Para criar o debuggee side
Use IVisualizerObjectProvider métodos para obter o objeto visualizado no lado do depurador.
Criar uma classe que herda de DialogDebuggerVisualizer.
Substituir o DialogDebuggerVisualizer.Show método para exibir a interface.Use IDialogVisualizerService métodos para exibir Windows forms, caixas de diálogo e controles como parte da sua interface.
Aplicar DebuggerVisualizerAttribute, dando a ele um visualizador (DialogDebuggerVisualizer).
Para criar o debuggee side
Aplicar DebuggerVisualizerAttribute, dando a ele um visualizador (DialogDebuggerVisualizer) e um objeto de fonte (VisualizerObjectSource).Se você omitir a object source, um objeto de fonte padrão será usado.
Se você deseja que seu poder editar objetos de dados, bem como exibi-los, você precisará substituir o TransferData ou CreateReplacementObject métodos de VisualizerObjectSource.
Consulte também
Tarefas
Como: instalar um visualizador
Como: testar e depurar um visualizador
Conceitos
Considerações de segurança do Visualizador