Exportar (0) Imprimir
Expandir todo
Este tema aún no ha recibido ninguna valoración - Valorar este tema

DebuggerDisplayAttribute (Clase)

Actualización: noviembre 2007

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
public final class DebuggerDisplayAttribute extends Attribute

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.

h67k82yw.alert_note(es-es,VS.90).gifNota:

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
Todos los miembros static (Shared en Visual Basic) públicos 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 Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

.NET Framework y .NET Compact Framework no admiten todas las versiones de cada plataforma. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.

.NET Framework

Compatible con: 3.5, 3.0, 2.0
¿Te ha resultado útil?
(Caracteres restantes: 1500)
Gracias por sus comentarios

Adiciones de comunidad

AGREGAR
Mostrar:
© 2014 Microsoft. Reservados todos los derechos.