Exportar (0) Imprimir
Expandir todo

DebuggerDisplayAttribute (Clase)

Determina cómo se muestra una clase o un campo en la ventana de variables del depurador.

Espacio de nombres: System.Diagnostics
Ensamblado: mscorlib (en mscorlib.dll)

[AttributeUsageAttribute(AttributeTargets.Assembly|AttributeTargets.Class|AttributeTargets.Struct|AttributeTargets.Enum|AttributeTargets.Property|AttributeTargets.Field|AttributeTargets.Delegate, AllowMultiple=true)] 
[ComVisibleAttribute(true)] 
public sealed class DebuggerDisplayAttribute : Attribute
/** @attribute AttributeUsageAttribute(AttributeTargets.Assembly|AttributeTargets.Class|AttributeTargets.Struct|AttributeTargets.Enum|AttributeTargets.Property|AttributeTargets.Field|AttributeTargets.Delegate, AllowMultiple=true) */ 
/** @attribute ComVisibleAttribute(true) */ 
public final class DebuggerDisplayAttribute extends Attribute
AttributeUsageAttribute(AttributeTargets.Assembly|AttributeTargets.Class|AttributeTargets.Struct|AttributeTargets.Enum|AttributeTargets.Property|AttributeTargets.Field|AttributeTargets.Delegate, AllowMultiple=true) 
ComVisibleAttribute(true) 
public final class DebuggerDisplayAttribute extends Attribute
No aplicable.

El constructor DebuggerDisplayAttribute tiene un argumento único: una cadena que se va a mostrar en la columna de valor para las instancias del tipo. Esta cadena puede contener llaves ({ and }). El texto entre llaves se evalúa como el nombre de un campo, una propiedad o un método. Por ejemplo, el siguiente código de C# hace que se muestre "Count = 4" cuando se seleccione el signo más (+) para expandir la presentación del depurador para una instancia de MyHashtable.

[DebuggerDisplay("Count = {count}")]
class MyHashtable
{
    public int count = 4;
}

No se procesan los atributos aplicados a las propiedades a las que se hace referencia en la expresión. En el caso de algunos compiladores, puede que se admita una expresión general que sólo tiene acceso implícito a esta referencia para la instancia actual del tipo de destino. La expresión está limitada; no hay acceso a los alias, variables locales ni punteros.

Este atributo se puede aplicar a lo siguiente:

  • Clases

  • Estructuras

  • Delegados

  • Enumeraciones

  • Campos

  • Propiedades

  • Ensamblados

La propiedad Target especifica el tipo de destino cuando se utiliza el atributo en el nivel de ensamblado. La propiedad Name puede contener una cadena similar a la utilizada en el constructor, con expresiones entre llaves. La propiedad Type se puede establecer en blanco si el tipo no debe mostrarse en las ventanas de datos.

NotaNota:

Las propiedades sólo deben utilizarse en los servidores proxy de tipos.

Para obtener más información sobre el uso de este atributo en Visual Studio 2005, vea Utilizar el atributo DebuggerDisplay.

El ejemplo de código siguiente se puede ver en Visual Studio 2005 para ver cuáles son los resultados de aplicar DebuggerDisplayAttribute.

using System;
using System.Collections;
using System.Diagnostics;
using System.Reflection;

class DebugViewTest
{
    // The following constant will appear in the debug window for DebugViewTest.
    const string TabString = "    ";
    // The following DebuggerBrowsableAttribute prevents the property following it 
    // from appearing in the debug window for the class.
    [DebuggerBrowsable(DebuggerBrowsableState.Never)]
    public static string y = "Test String";

    static void Main(string[] args)
    {
        MyHashtable myHashTable = new MyHashtable();
        myHashTable.Add("one", 1);
        myHashTable.Add("two", 2);
        Console.WriteLine(myHashTable.ToString());
        Console.WriteLine("In Main.");

 }
}
[DebuggerDisplay("{value}", Name = "{key}")]
internal class KeyValuePairs
{
    private IDictionary dictionary;
    private object key;
    private object value;

    public KeyValuePairs(IDictionary dictionary, object key, object value)
    {
        this.value = value;
        this.key = key;
        this.dictionary = dictionary;
    }
}
[DebuggerDisplay("Count = {Count}")]
[DebuggerTypeProxy(typeof(HashtableDebugView))]
class MyHashtable : Hashtable
{
    private const string TestString = "This should not appear in the debug window.";

    internal class HashtableDebugView
   {
      private Hashtable hashtable;
      public const string TestString = "This should appear in the debug window.";
      public HashtableDebugView(Hashtable hashtable)
      {
         this.hashtable = hashtable;
      }

      [DebuggerBrowsable(DebuggerBrowsableState.RootHidden)]
      public KeyValuePairs[] Keys
      {
         get 
         {
             KeyValuePairs[] keys = new KeyValuePairs[hashtable.Count];

            int i = 0;
            foreach(object key in hashtable.Keys)
            {
               keys[i] = new KeyValuePairs(hashtable, key, hashtable[key]);
               i++;
            }
         return keys;
         }
      }
   }
}

System.Object
   System.Attribute
    System.Diagnostics.DebuggerDisplayAttribute

Los miembros estáticos públicos (Shared en Visual Basic) de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.

Windows 98, Windows 2000 Service Pack 4, Windows Millennium, Windows Server 2003, Windows XP Media Center, Windows XP Professional x64, Windows XP SP2, Windows XP Starter

Microsoft .NET Framework 3.0 es compatible con Windows Vista, Microsoft Windows XP SP2 y Windows Server 2003 SP1.

.NET Framework

Compatible con: 3.0, 2.0

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft