AttributeProviderAttribute クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
属性のリダイレクトを有効にします。 このクラスは継承できません。
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を使用して、特定の種類のIListSourceを持つDataSource プロパティをマークする方法を示します。 完全なコード一覧については、「 方法: Windows フォーム コントロールで属性を適用する」を参照してください。
[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として型指定されます。 この理由は、このプロパティが複数の種類の入力を受け入れることができるためです。 残念ながら、プロパティの特性を記述するメタデータを追加する一般的な場所はありません。 .NET Framework 全体の各 DataSource プロパティには、型コンバーター、UI 型エディター、およびメタデータを必要とするその他のサービスに対して同じメタデータが必要です。
AttributeProviderAttributeは、この状況を解決します。
この属性をプロパティに配置すると、プロパティ記述子の MemberDescriptor.Attributes コレクションの属性を取得するための規則が異なります。 通常、プロパティ記述子はローカル属性を収集し、これらをプロパティ型の属性とマージします。 この場合、属性は、実際のプロパティ型ではなく、 AttributeProviderAttributeから返された型から取得されます。 この属性は、DataGridView.DataSource オブジェクトの特定の型をIListSourceにポイントするためにDataGridView.DataSourceで使用され、データ バインディングを有効にするために適切なメタデータが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) |