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
- Наследование
- Атрибуты
Примеры
В следующем примере кода показано, как пометить 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) |