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


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
Атрибуты

Примеры

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

[Category("Data")]
[Description("Indicates the source of data for the control.")]
[RefreshProperties(RefreshProperties.Repaint)]
[AttributeProvider(typeof(IListSource))]
public object DataSource
{
    get
    {
        return this.dataGridView1.DataSource;
    }

    set
    {
        this.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)

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

AttributeProviderAttribute(String, 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)

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

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