É possível alterar o que é exibido em um Studio Debugger coluna janela Variáveis ​​Valor Visual para uma 3ª classe festa?

votos
1

Quando a depuração existem várias variáveis janelas (automóveis, habitantes locais, relógio) contendo colunas Nome, Valor Tipo. O valor muitas vezes parece mostrar o nome da classe de um objeto. Em casos específicos que eu gostaria de mostrar algo mais significativo com base nas propriedades da instância de classe.

Como um exemplo específico, por CodeTypeReference eu gostaria de ver uma representação de texto do tipo referenciado (onde válidos) com base na BaseType corda ou ArrayElementType valor, em vez de ver System.CodeDom.CodeTypeReferenceExpression.

Visualizers parecem oferecer janelas de diálogo separadas, ao invés de uma forma de preencher a coluna de valor.

dicas de dados são por variável em vez de por tipo.

A coisa mais próxima parece ser a DebuggerTypeProxyAttribute caso em que eu acho que eu estou pedindo É possível aplicar um atributo de classe de outra pessoa?

Estou lidando principalmente com o Visual Studio 2010, embora uma resposta Visual Studio 2008 seria útil.

Publicado 05/10/2011 em 09:51
fonte usuário
Em outras línguas...                            


3 respostas

votos
0

Você pode substituir o método ToString para suas próprias classes. O valor é geralmente apenas uma chamada para ToString, e se não for substituído, isso mostra o tipo.

Update: Para as classes que você não tem o código para, não posso dar uma resposta valiosa ao invés de você poderia envolver as classes (herdar), mas isto é, hm, estranha para ser educado (IMHO).

Respondeu 05/10/2011 em 10:23
fonte usuário

votos
7

Sim, há duas maneiras de se fazer isso:

  1. Usando OzCode (anteriormente BugAid para Visual Studio), uma ferramenta comercial que eu criei, você pode simplesmente estrela propriedades / campos em seu tipo, e tem aqueles exibidos na coluna Valor em qualquer tipo, se é 3o partido ou não.

  2. Você pode mudar o seu arquivo autoexp.cs, e aplicar ou o DebuggerDisplayAttribute ou o DebuggerTypeProxyAttribute a tipos 3rd party, como descrito na minha resposta sobre uma questão semelhante . Por exemplo, isto é como você aplicaria a DebuggerDisplayAttribute para System.Drawing.Pen:[assembly: DebuggerDisplay(@"\{Color = {color}}", Target = typeof(Pen))]

Essa resposta se aplica tanto VS2008 e VS2010.

Respondeu 05/10/2011 em 11:08
fonte usuário

votos
0

Sim, você pode aplicar DebuggerTypeProxyAttribute aos tipos que você não possui (a menos que eles são privados), como explicado na minha resposta a uma pergunta semelhante aqui

Respondeu 30/06/2018 em 13:11
fonte usuário

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more