Compartir a través de


Utilizar el atributo DebuggerTypeProxy

DebuggerTypeProxyAttribute especifica un 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 proxy, el proxy reemplaza al 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 proxy de tipo debe tener un constructor que tome un argumento del tipo que el proxy reemplazará. El depurador crea una nueva instancia de la clase de proxy de tipo cada vez que necesita mostrar una variable del tipo de destino. Esto puede afectar al rendimiento. Por tanto, en el constructor no debe realizarse más trabajo del estrictamente necesario.

Para minimizar la reducción de rendimiento, el evaluador de expresiones no examina los atributos en el 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 se deben colocar atributos en el propio tipo de presentación. Los atributos pueden y deben utilizarse en el cuerpo del tipo de presentación.

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

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

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

Utilizar genéricos con DebuggerTypeProxy

La compatibilidad con los genéricos es limitada. En C#, DebuggerTypeProxy solo 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 el siguiente aspecto:

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