Поделиться через


DebuggerTypeProxyAttribute Класс

Определение

Указывает прокси-сервер отображения для типа.

public ref class DebuggerTypeProxyAttribute sealed : Attribute
[System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Struct, AllowMultiple=true)]
public sealed class DebuggerTypeProxyAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Struct, AllowMultiple=true)]
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class DebuggerTypeProxyAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Struct, AllowMultiple=true)>]
type DebuggerTypeProxyAttribute = class
    inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Assembly | System.AttributeTargets.Class | System.AttributeTargets.Struct, AllowMultiple=true)>]
[<System.Runtime.InteropServices.ComVisible(true)>]
type DebuggerTypeProxyAttribute = class
    inherit Attribute
Public NotInheritable Class DebuggerTypeProxyAttribute
Inherits Attribute
Наследование
DebuggerTypeProxyAttribute
Атрибуты

Примеры

В следующем примере кода показано, DebuggerTypeProxyAttribute как указать частный вложенный тип, который будет использоваться в качестве прокси-сервера отображения отладчика. Этот пример кода является частью более крупного примера, предоставленного для DebuggerDisplayAttribute класса.

[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;
            }
        }
    }
}
<DebuggerDisplay("Count = {Count}"), DebuggerTypeProxy(GetType(MyHashtable.HashtableDebugView))> _
Class MyHashtable
    Inherits Hashtable
    Private Const TestString As String = "This should not appear in the debug window."

    Friend Class HashtableDebugView
        Private hashtable As Hashtable
        Public Shared TestString As String = "This should appear in the debug window."

        Public Sub New(ByVal hashtable As Hashtable)
            Me.hashtable = hashtable
        End Sub

        <DebuggerBrowsable(DebuggerBrowsableState.RootHidden)> _
        ReadOnly Property Keys as KeyValuePairs()
            Get
                Dim nkeys(hashtable.Count) as KeyValuePairs

                Dim i as Integer = 0
                For Each key As Object In hashtable.Keys
                    nkeys(i) = New KeyValuePairs(hashtable, key, hashtable(key))
                    i = i + 1
                Next
                Return nkeys
            End Get
        End Property

    End Class
End Class

Комментарии

Примечание Используйте этот атрибут, если необходимо значительно и принципиально изменить представление отладки типа, но не измените сам тип.

Атрибут DebuggerTypeProxyAttribute используется для указания прокси-сервера отображения для типа, что позволяет разработчику адаптировать представление для типа. Этот атрибут также можно использовать на уровне сборки, в этом случае Target свойство указывает тип, для которого будет использоваться прокси-сервер. Как правило, этот атрибут указывает частный вложенный тип, который возникает в пределах типа, к которому применяется атрибут. Средство оценки выражений, поддерживающее средства просмотра типов, проверяет наличие этого атрибута при отображении типа. Если атрибут найден, средство оценки выражений заменяет тип прокси отображения для типа, к которому применяется атрибут.

Когда присутствует DebuggerBrowsableAttribute, окно переменных отладчика отображает только публичные члены типа прокси. Приватные члены не отображаются. Поведение окна данных не изменяется с помощью расширенных атрибутов представлений.

Чтобы избежать ненужных штрафов производительности, вычислители выражений не должны проверять атрибуты на отображаемом прокси-сервере типа, если тип не развернут, либо через пользователя, щелкнув знак плюса (+) рядом с типом в окне данных, либо с помощью приложения атрибута DebuggerBrowsableAttribute . Поэтому рекомендуется не применять атрибуты к типу отображения. Атрибуты могут и должны применяться в рамках типа отображения.

Конструкторы

Имя Описание
DebuggerTypeProxyAttribute(String)

Инициализирует новый экземпляр DebuggerTypeProxyAttribute класса с помощью имени типа прокси-сервера.

DebuggerTypeProxyAttribute(Type)

Инициализирует новый экземпляр DebuggerTypeProxyAttribute класса с помощью типа прокси-сервера.

Свойства

Имя Описание
ProxyTypeName

Возвращает имя типа прокси-сервера.

Target

Возвращает или задает целевой тип атрибута.

TargetTypeName

Возвращает или задает имя целевого типа.

TypeId

При реализации в производном классе получает уникальный идентификатор для этого Attribute.

(Унаследовано от Attribute)

Методы

Имя Описание
Equals(Object)

Возвращает значение, указывающее, равен ли этот экземпляр указанному объекту.

(Унаследовано от Attribute)
GetHashCode()

Возвращает хэш-код для этого экземпляра.

(Унаследовано от Attribute)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
IsDefaultAttribute()

При переопределении в производном классе указывает, является ли значение этого экземпляра значением по умолчанию для производного класса.

(Унаследовано от Attribute)
Match(Object)

При переопределении в производном классе возвращает значение, указывающее, равен ли этот экземпляр указанному объекту.

(Унаследовано от Attribute)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
ToString()

Возвращает строку, представляющую текущий объект.

(Унаследовано от Object)

Явные реализации интерфейса

Имя Описание
_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

Сопоставляет набор имен соответствующему набору идентификаторов диспетчеризации.

(Унаследовано от Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

Извлекает сведения о типе объекта, который можно использовать для получения сведений о типе для интерфейса.

(Унаследовано от Attribute)
_Attribute.GetTypeInfoCount(UInt32)

Возвращает количество предоставляемых объектом интерфейсов для доступа к сведениям о типе (0 или 1).

(Унаследовано от Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

Предоставляет доступ к свойствам и методам, предоставляемым объектом.

(Унаследовано от Attribute)

Применяется к

См. также раздел