Utilizar el atributo DebuggerTypeProxy

DebuggerTypeProxyAttribute especifica un servidor proxy, o suplente, para un tipo y cambia la forma en que se muestra el tipo en las ventanas del depurador.Cuando se ve una variable que tiene un servidor proxy, el servidor proxy reemplaza el tipo original en la presentación.En la ventana de las variables del depurador se muestran sólo los miembros públicos del tipo de servidor proxy.No se muestran los miembros privados.

Este atributo se puede aplicar a:

  • Estructuras

  • Clases

  • Ensamblados

Una clase de servidor proxy de tipo debe tener un constructor que toma un argumento del tipo que el servidor proxy reemplazará.El depurador crea una nueva instancia de la clase de servidor proxy de tipo cada vez que necesita mostrar una variable del tipo de destino.Esto puede tener implicaciones para el rendimiento.Como resultado, no debe realizarse en el constructor más trabajo del estrictamente necesario.

Para minimizar la reducción del rendimiento, el evaluador de expresiones no examina los atributos en el servidor proxy de presentación del tipo, a menos que el usuario expanda el tipo haciendo clic en el símbolo + en la ventana del depurador o mediante DebuggerBrowsableAttribute.Por consiguiente, no debe colocar atributos en el propio tipo de monitor.Los atributos pueden y deben utilizarse en el cuerpo del tipo de monitor.

Se recomienda que el servidor proxy de tipo sea una clase anidada privada dentro de la clase que el atributo tiene como destino.De este modo, puede obtener fácilmente acceso a los miembros internos.

Si se utiliza DebuggerTypeProxyAttribute en el nivel de ensamblado, el parámetro Target especifica el tipo que el servidor proxy reemplazará.

Para obtener un ejemplo de cómo utilizar este atributo junto con los atributos DebuggerDisplayAttribute y DebuggerTypeProxyAttribute, vea Utilizar el atributo DebuggerDisplay.

Utilizar los genéricos con DebuggerTypeProxy

La compatibilidad con los genéricos es limitada.En C#, DebuggerTypeProxy sólo acepta tipos abiertos.Un tipo abierto, también denominado tipo no construido, es un tipo genérico de cuyos parámetros de tipo no se han creado instancias con argumentos.No se admiten los tipos cerrados, también denominados tipos construidos.

La sintaxis de un tipo abierto tiene la apariencia siguiente:

Namespace.TypeName<,>

Si utiliza un tipo genérico como destino en DebuggerTypeProxy, debe utilizar esta sintaxis.El mecanismo DebuggerTypeProxy deduce los parámetros de tipo automáticamente.

Para obtener más información sobre los tipos abiertos y cerrados en C#, vea la Especificación del lenguaje C#, sección 20.5.2 Tipos abiertos y cerrados.

Visual Basic no tiene sintaxis de tipos abiertos, por lo que no se puede hacer lo mismo en Visual Basic.En su lugar, debe utilizar una representación de cadena del nombre del tipo abierto.

"Namespace.TypeName'2"

Vea también

Referencia

Utilizar el atributo DebuggerDisplay

Conceptos

Mostrar tipos de datos personalizados

Mejorar la depuración con los atributos de visualización del depurador