Compartilhar via


Usando um atributo DebuggerTypeProxy

Este tópico se aplica a:

Edição

Visual Basic

C#

C++

Desenvolvedores Web

Express

Padrão

PRO e equipe

Legenda de tabela:

Aplica-se

Não é aplicada

Comando ou comandos oculta por padrão.

DebuggerTypeProxyAttribute Especifica um proxy ou substituto para um tipo e alterações a maneira como o tipo é exibido nas janelas depurador. Quando você exibir uma variável que possui um proxy, o proxy significa o tipo original no Exibir.A janela do depurador de variável exibe somente os membros do tipo de proxy público.Membros particulares não são exibidos.

Este atributo pode ser aplicado a:

  • Estruturas

  • Classes

  • Conjuntos de Módulos (Assemblies)

Uma classe do tipo proxy deve ter um construtor que leva um argumento do tipo que o proxy irá substituir.O depurador cria uma nova instância da classe do tipo proxy toda vez que ele precisa exibir uma variável no tipo de destino.Isso pode ter implicações de desempenho.Por esse motivo, você não deve fazer mais qualquer trabalho no Construtor, apenas o que seja absolutamente necessário.

Para minimizar as penalidades de desempenho, o avaliador da expressão não oferece o exame dos atributos no proxy de exibição do tipo, a menos que o tipo esteja expandido, o usuário clicando no símbolo + na janela depurador ou pelo uso de DebuggerBrowsableAttribute. Portanto, você não deve colocar atributos no tipo de exibição propriamente dito.Atributos podem e devem ser usados no corpo do tipo de exibição.

É uma boa ideia para o tipo proxy ser uma classe privada aninhada dentro da classe de destino dos atributos.Isso permite que ele acesse membros internos facilmente.

If DebuggerTypeProxyAttribute usado no nível do assembly, o Target parâmetro especifica o tipo que o proxy irá substituir.

Para obter um exemplo de como usar esse atributo juntamente com DebuggerDisplayAttribute e DebuggerTypeProxyAttribute, consulteUsando o atributo DebuggerDisplay.

Usando Classes ou Métodos Genéricos com o DebuggerTypeProxy

O suporte para classes ou métodos genéricos é limitado.For C#, DebuggerTypeProxy oferece suporte somente a tipos abertos. Um tipo em aberto, também chamado de um tipo unconstructed, é um tipo genérico que não foi instanciado com argumentos para seus parâmetros de tipo.Tipos fechados, também chamados de tipos construídos, não são suportados.

A sintaxe de um tipo aberto tem esta aparência:

Namespace.TypeName<,>

Se você usar um tipo genérico sistema autônomo um destino em DebuggerTypeProxy, você deve usar essa sintaxe. The DebuggerTypeProxy mecanismo infere nos tipos dos parâmetros para você.

Para obter mais informações sobre tipos abertas e fechadas em translation from VPE for Csharp consulte o Especificação da linguagem C#, seção 20.5.2 em aberto e fechado tipos.

O Visual Basic não possui sintaxe de tipo aberto, portanto não é possível fazer a mesma coisa no Visual Basic.Em vez disso, você deve usar uma sequência de representação do nome do tipo aberto.

"Namespace.TypeName'2"

Consulte também

Conceitos

Exibir os tipos de dados personalizados

Aprimorando a depuração com os atributos de exibição do depurador

Referência

Usando o atributo DebuggerDisplay