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 как указать частный вложенный тип, который будет использоваться в качестве прокси-сервера отображения отладчика. Этот пример кода является частью более крупного примера, предоставленного для 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) |