Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
DebuggerTypeProxyAttribute especifica um proxy ou um representante para um tipo e altera a maneira como o tipo é exibido nas janelas do depurador. Quando você exibe uma variável que tem um proxy, o proxy representa o tipo original na exibição. A janela de variáveis do depurador exibe apenas os membros públicos do tipo proxy. Membros privados não são exibidos.
Esse atributo pode ser aplicado a:
- Estruturas
- Aulas
- Assembléias
Observação
Para código nativo, esse atributo só tem suporte no código C++/CLI.
Uma classe proxy de tipo deve ter um construtor que recebe um argumento do tipo que o proxy vai substituir. O depurador cria uma nova instância da classe proxy de tipo sempre que precisa exibir uma variável do tipo de destino. Isso pode ter implicações de desempenho. Como resultado, evite qualquer trabalho desnecessário no construtor.
Para minimizar as penalizações de desempenho, o avaliador de expressões não inspeciona os atributos no proxy de exibição do tipo, a menos que o tipo seja expandido pelo usuário ao clicar no símbolo + na janela do depurador ou através do uso de DebuggerBrowsableAttribute. Portanto, não coloque atributos no próprio tipo de exibição. Os atributos podem e devem ser usados no corpo do tipo de exibição.
É uma boa ideia que o proxy de tipo seja uma classe aninhada privada dentro da classe que o atributo tem como destino. Isso permite que ele acesse facilmente membros internos.
DebuggerTypeProxyAttribute pode ser herdado, portanto, se um proxy de tipo for especificado em uma classe base, ele se aplicará a classes derivadas, a menos que essas classes derivadas especifiquem seu próprio proxy de tipo.
Se DebuggerTypeProxyAttribute for usado no nível de montagem, o parâmetro Target especifica o tipo do proxy que deve ser substituído.
Para obter um exemplo de como usar esse atributo junto com DebuggerDisplayAttribute e DebuggerTypeProxyAttribute, consulte Usando o atributo DebuggerDisplay.
Importante
Se você selecionar a opção Mostrar estrutura bruta de objetos em variáveis do Windows , o DebuggerDisplay atributo será ignorado. Essa configuração está localizada no painel Ferramentas>Opções, na seção Todas as Configurações>Depuração>Geral.
Importante
Se você selecionar a opção Mostrar estrutura bruta de objetos em variáveis do Windows , o DebuggerDisplay atributo será ignorado. Essa configuração está localizada na caixa de diálogo Ferramentas>Opções na seção Depuração>Geral.
Usando genéricos com DebuggerTypeProxy
O suporte para genéricos é limitado. Para C#, DebuggerTypeProxy dá suporte apenas a tipos abertos. Um tipo aberto, também chamado de tipo não estruturado, é um tipo genérico que não é instanciado com argumentos para seus parâmetros de tipo. Tipos fechados, também chamados de tipos construídos, não têm suporte.
A sintaxe de um tipo aberto tem esta aparência:
Namespace.TypeName<,>
Se você usar um tipo genérico como destino em DebuggerTypeProxy, deverá usar essa sintaxe. O DebuggerTypeProxy mecanismo infere os parâmetros de tipo para você.
Para obter mais informações sobre tipos abertos e fechados em C#, consulte a Especificação da Linguagem C#, seção 20.5.2 Tipos abertos e fechados.
O Visual Basic não tem sintaxe de tipo aberto, portanto, você não pode fazer a mesma coisa no Visual Basic. Em vez disso, você deve usar uma representação de cadeia de caracteres do nome de tipo aberto.
"Namespace.TypeName'2"