Idioma
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 substituto, 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 substitui o tipo original em exibição. A janela de variáveis do depurador exibe apenas os membros públicos do tipo de 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 de proxy de tipo deve ter um construtor que usa um argumento do tipo para o proxy a ser substituído. 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 penalidades de desempenho, o avaliador de expressão não examina os atributos no proxy de exibição do tipo a menos que o tipo seja expandido pelo clique do usuário no símbolo + na janela do depurador ou pelo 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 para o proxy do tipo ser uma classe aninhada particular dentro da classe a que o atributo se destina. 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 mecanismo DebuggerTypeProxy infere os parâmetros de tipo para você.
Para obter mais informações sobre tipos abertos e fechados em C#, consulte a seção Especificação da Linguagem C# 8.4.3, 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ê deverá usar uma representação de cadeia de caracteres do nome do tipo aberto.
"Namespace.TypeName'2"