Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
DebuggerTypeProxyAttribute especifica un proxy o un sustituto para un tipo y cambia la forma en que se muestra el tipo en las ventanas del depurador. Cuando inspeccionas una variable que tiene un proxy, el proxy representa el tipo original en la pantalla. La ventana variable del depurador muestra solo los miembros públicos del tipo de proxy. Los miembros privados no se muestran.
Este atributo se puede aplicar a:
- Estructuras
- Clases
- Ensamblados
Nota:
En el caso del código nativo, este atributo solo se admite en código de C++/CLI.
Una clase proxy de tipo debe tener un constructor que acepte un argumento del tipo que el proxy debe reemplazar. El depurador crea una nueva instancia de la clase proxy del tipo cada vez que necesita mostrar una variable del tipo objetivo. Esto puede tener implicaciones de rendimiento. Como resultado, evite cualquier trabajo innecesario en el constructor.
Para minimizar las penalizaciones 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 el uso de DebuggerBrowsableAttribute. Por lo tanto, no coloque atributos en el propio tipo de presentación. Los atributos pueden y deben usarse en el cuerpo del tipo de presentación.
Es una buena idea que el proxy de tipo sea una clase anidada privada dentro de la clase a la que está destinado el atributo. Esto le permite acceder fácilmente a miembros internos.
DebuggerTypeProxyAttribute se puede heredar, por lo que si se especifica un proxy de tipo en una clase base, se aplica a cualquier clase derivada, a menos que esas clases derivadas especifiquen su propio proxy de tipo.
Si DebuggerTypeProxyAttribute se usa en el nivel de ensamblado, el parámetro Target especifica el tipo que el proxy debe reemplazar.
Para obtener un ejemplo de cómo usar este atributo junto con DebuggerDisplayAttribute y DebuggerTypeProxyAttribute, vea Uso del atributo DebuggerDisplay.
Importante
Si selecciona la opción Mostrar estructura sin procesar de objetos en las ventanas de variables , se omite el DebuggerDisplay atributo . Esta configuración se encuentra en el panel Herramientas>Opciones de la sección Todos los ajustes>Depuración>General.
Importante
Si selecciona la opción Mostrar estructura sin procesar de objetos en las ventanas de variables , se omite el DebuggerDisplay atributo . Esta configuración se encuentra en el cuadro de diálogoOpciones de > de la sección Depuración>general.
Uso de genéricos con DebuggerTypeProxy
La compatibilidad con genéricos es limitada. Para C#, DebuggerTypeProxy solo admite tipos abiertos. Un tipo abierto, también denominado tipo no construido, es un tipo genérico que no se instancia con argumentos para sus parámetros de tipo. No se admiten los tipos cerrados, también denominados tipos construidos.
La sintaxis de un tipo abierto tiene este aspecto:
Namespace.TypeName<,>
Si usa un tipo genérico como destino en DebuggerTypeProxy, debe usar esta sintaxis. El DebuggerTypeProxy mecanismo deduce los parámetros de tipo.
Para obtener más información sobre los tipos abiertos y cerrados en C#, consulte la sección 20.5.2 Tipos abiertos y cerrados.
Visual Basic no tiene sintaxis de tipo abierto, por lo que no puede hacer lo mismo en Visual Basic. En su lugar, debe usar una representación de cadena del nombre de tipo abierto.
"Namespace.TypeName'2"