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 窗体控件中应用属性

[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。 这样做的原因是此属性可以接受多种类型的输入。 遗憾的是,这不提供用于添加元数据来描述属性特征的通用位置。 .NET Framework中的每个DataSource属性都需要为类型转换器、UI 类型编辑器和其他需要元数据的服务具有相同的元数据。 这种 AttributeProviderAttribute 状况得到补救。

将此属性置于属性上后,获取属性描述符 MemberDescriptor.Attributes 集合的属性的规则会有所不同。 通常,属性描述符收集本地属性,然后将这些属性与属性类型中的属性合并。 在这种情况下,属性取自 从 返回的类型, AttributeProviderAttribute而不是实际属性类型。 此属性用于 DataGridView.DataSourceDataGridView.DataSource 对象的特定类型指向 IListSource,并放置 IListSource 相应的元数据以启用数据绑定。 这样做时,外部各方可以轻松地将元数据添加到所有数据源。

从 中 AttributeProviderAttribute 声明的类型获取的属性在 属性类型的属性和 属性的属性之间具有优先级。 以下列表按优先级顺序显示完整的可用合并属性集:

  • 属性 (Property) 属性 (Attribute)

  • 属性提供程序属性

  • 属性类型属性

构造函数

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)

适用于

另请参阅