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


AttributeProviderAttribute Класс

Определение

Включает перенаправление атрибутов. Этот класс не может быть унаследован.

public ref class AttributeProviderAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Property)]
public class AttributeProviderAttribute : Attribute
public class AttributeProviderAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Property)>]
type AttributeProviderAttribute = class
    inherit Attribute
type AttributeProviderAttribute = class
    inherit Attribute
Public Class AttributeProviderAttribute
Inherits Attribute
Наследование
AttributeProviderAttribute
Атрибуты

Примеры

В следующем примере кода показано, как пометить AttributeProviderAttributeDataSource свойство с определенным типом IListSource. Полный список кода см. в разделе "Практическое руководство. Применение атрибутов в элементах управления Windows Forms".

[Category("Data")]
[Description("Indicates the source of data for the control.")]
[RefreshProperties(RefreshProperties.Repaint)]
[AttributeProvider(typeof(IListSource))]
public object DataSource
{
    get => _dataGridView1.DataSource;
    set => _dataGridView1.DataSource = value;
}
<Category("Data"), _
Description("Indicates the source of data for the control."), _
RefreshProperties(RefreshProperties.Repaint), _
AttributeProvider(GetType(IListSource))> _
Public Property DataSource() As Object
    Get
        Return Me.dataGridView1.DataSource
    End Get

    Set(ByVal value As Object)
        Me.dataGridView1.DataSource = value
    End Set
End Property

Комментарии

В объектной модели .NET Framework существует несколько случаев, когда свойство намеренно типитируется, чтобы быть расплывчатым. Например, DataGridView.DataSource свойство вводится как object. Причиной этого является то, что это свойство может принимать несколько типов входных данных. К сожалению, это не дает общего места для добавления метаданных для описания характеристик свойства. Каждое DataSource свойство на платформе .NET Framework должно иметь идентичные метаданные для преобразователей типов, редакторов типов пользовательского интерфейса и других служб, требующих метаданных. Это средство правовой AttributeProviderAttribute защиты.

После размещения этого атрибута в свойстве правила получения атрибутов для коллекции дескриптора MemberDescriptor.Attributes свойств отличаются. Как правило, дескриптор свойства собирает локальные атрибуты, а затем объединяет их с атрибутами из типа свойства. В этом случае атрибуты взяты из типа, возвращаемого из AttributeProviderAttributeтипа, а не из фактического типа свойства. Этот атрибут используется для DataGridView.DataSource указания DataGridView.DataSource конкретного типа IListSourceобъекта, и соответствующие метаданные помещаются IListSource для включения привязки данных. При этом внешние стороны могут легко добавлять метаданные во все источники данных.

Атрибуты, полученные из типа, объявленного в AttributeProviderAttribute свойстве, имеют приоритет между атрибутами типа свойства и атрибутами свойства. В следующем списке в порядке приоритета показан полный набор доступных объединенных атрибутов:

  • Атрибуты свойств

  • Атрибуты поставщика атрибутов

  • Атрибуты типа свойства

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

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

Инициализирует новый экземпляр AttributeProviderAttribute класса с заданным именем типа и именем свойства.

AttributeProviderAttribute(String)

Инициализирует новый экземпляр AttributeProviderAttribute класса с заданным именем типа.

AttributeProviderAttribute(Type)

Инициализирует новый экземпляр AttributeProviderAttribute класса с заданным типом.

Свойства

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

Возвращает имя свойства, для которого будут извлекаться атрибуты.

TypeId

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

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

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

Методы

Имя Описание
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)

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

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