CustomAttributeData クラス
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
リフレクションのみのコンテキストに読み込まれているアセンブリ、モジュール、型、メンバー、およびパラメーターのカスタム属性データへのアクセスを提供します。
public ref class CustomAttributeData
public ref class CustomAttributeData sealed
public class CustomAttributeData
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public sealed class CustomAttributeData
[System.Runtime.InteropServices.ComVisible(true)]
[System.Serializable]
public class CustomAttributeData
type CustomAttributeData = class
[<System.Runtime.InteropServices.ComVisible(true)>]
[<System.Serializable>]
type CustomAttributeData = class
Public Class CustomAttributeData
Public NotInheritable Class CustomAttributeData
- 継承
-
CustomAttributeData
- 属性
例
次の例では、4 つのコンストラクターと 4 つのプロパティを持つカスタム属性を定義します。 2 つのプロパティは読み取り専用であり、コンストラクターの位置パラメーターを使用して設定されます。 他の 2 つのプロパティは読み取り/書き込みであり、名前付き引数を使用してのみ設定できます。 1 つの位置指定プロパティは文字列の配列であり、1 つの名前付きプロパティは整数の配列です。
この属性は、アセンブリ、アセンブリで宣言された型、型のメソッド、メソッドのパラメーターに適用されます。 このような場合は、さまざまなコンストラクターが使用されます。 アセンブリを実行すると、それ自体がリフレクションのみのコンテキストに読み込まれて、それに適用されたカスタム属性と、それに含まれる型とメンバーに関する情報が表示されます。
型に適用される 属性は、位置引数と名前付き引数の両方を持つ配列プロパティを示しています。
using namespace System;
using namespace System::Reflection;
using namespace System::Collections::Generic;
using namespace System::Collections::ObjectModel;
// An enumeration used by the ExampleAttribute class.
public enum class ExampleKind
{
FirstKind, SecondKind, ThirdKind, FourthKind
};
// An example attribute. The attribute can be applied to all
// targets, from assemblies to parameters.
//
[AttributeUsage(AttributeTargets::All)]
public ref class ExampleAttribute: public Attribute
{
private:
// Data for properties.
ExampleKind kindValue;
String^ noteValue;
array<String^>^ arrayStrings;
array<int>^ arrayNumbers;
// Constructors.
void ExampleAttributeInitialize( ExampleKind initKind, array<String^>^ initStrings )
{
kindValue = initKind;
arrayStrings = initStrings;
}
public:
ExampleAttribute()
{
ExampleAttributeInitialize( ExampleKind::FirstKind, nullptr );
}
ExampleAttribute( ExampleKind initKind )
{
ExampleAttributeInitialize( initKind, nullptr );
}
ExampleAttribute( ExampleKind initKind, array<String^>^ initStrings )
{
ExampleAttributeInitialize( initKind, initStrings );
}
// Properties. The Note and Numbers properties must be read/write, so they
// can be used as named parameters.
//
property ExampleKind Kind
{
ExampleKind get()
{
return kindValue;
}
}
property array<String^>^ Strings
{
array<String^>^ get()
{
return arrayStrings;
}
}
property String^ Note
{
String^ get()
{
return noteValue;
}
void set( String^ value )
{
noteValue = value;
}
}
property array<int>^ Numbers
{
array<int>^ get()
{
return arrayNumbers;
}
void set( array<int>^ value )
{
arrayNumbers = value;
}
}
};
// The example attribute is applied to the assembly.
[assembly:Example(ExampleKind::ThirdKind,Note="This is a note on the assembly.")];
// The example attribute is applied to the test class.
//
[Example(ExampleKind::SecondKind,
gcnew array<String^> { "String array argument, line 1",
"String array argument, line 2",
"String array argument, line 3" },
Note="This is a note on the class.",
Numbers = gcnew array<int> { 53, 57, 59 })]
public ref class Test
{
public:
// The example attribute is applied to a method, using the
// parameterless constructor and supplying a named argument.
// The attribute is also applied to the method parameter.
//
[Example(Note="This is a note on a method.")]
void TestMethod( [Example] Object^ arg ){}
// Main() gets objects representing the assembly, the test
// type, the test method, and the method parameter. Custom
// attribute data is displayed for each of these.
//
static void Main()
{
Assembly^ assembly = Assembly::ReflectionOnlyLoad( "Source" );
Type^ t = assembly->GetType( "Test" );
MethodInfo^ m = t->GetMethod( "TestMethod" );
array<ParameterInfo^>^p = m->GetParameters();
Console::WriteLine( "\r\nAttributes for assembly: '{0}'", assembly );
ShowAttributeData( CustomAttributeData::GetCustomAttributes( assembly ) );
Console::WriteLine( "\r\nAttributes for type: '{0}'", t );
ShowAttributeData( CustomAttributeData::GetCustomAttributes( t ) );
Console::WriteLine( "\r\nAttributes for member: '{0}'", m );
ShowAttributeData( CustomAttributeData::GetCustomAttributes( m ) );
Console::WriteLine( "\r\nAttributes for parameter: '{0}'", p );
ShowAttributeData( CustomAttributeData::GetCustomAttributes( p[ 0 ] ) );
}
private:
static void ShowValueOrArray(CustomAttributeTypedArgument^ cata)
{
if (cata->Value->GetType() == ReadOnlyCollection<CustomAttributeTypedArgument>::typeid)
{
Console::WriteLine(" Array of '{0}':", cata->ArgumentType);
for each (CustomAttributeTypedArgument^ cataElement in
(ReadOnlyCollection<CustomAttributeTypedArgument>^) cata->Value)
{
Console::WriteLine(" Type: '{0}' Value: '{1}'",
cataElement->ArgumentType, cataElement->Value);
}
}
else
{
Console::WriteLine( " Type: '{0}' Value: '{1}'",
cata->ArgumentType, cata->Value );
}
}
static void ShowAttributeData( IList< CustomAttributeData^ >^ attributes )
{
for each ( CustomAttributeData^ cad in attributes )
{
Console::WriteLine( " {0}", cad );
Console::WriteLine( " Constructor: '{0}'", cad->Constructor );
Console::WriteLine( " Constructor arguments:" );
for each ( CustomAttributeTypedArgument^ cata in cad->ConstructorArguments )
{
ShowValueOrArray(cata);
}
Console::WriteLine( " Named arguments:" );
for each ( CustomAttributeNamedArgument cana in cad->NamedArguments )
{
Console::WriteLine( " MemberInfo: '{0}'", cana.MemberInfo );
ShowValueOrArray(cana.TypedValue);
}
}
}
};
int main()
{
Test::Main();
}
/* This code example produces output similar to the following:
Attributes for assembly: 'source, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
[System.Runtime.CompilerServices.CompilationRelaxationsAttribute((Int32)8)]
Constructor: 'Void .ctor(Int32)'
Constructor arguments:
Type: 'System.Int32' Value: '8'
Named arguments:
[System.Runtime.CompilerServices.RuntimeCompatibilityAttribute(WrapNonExceptionThrows = True)]
Constructor: 'Void .ctor()'
Constructor arguments:
Named arguments:
MemberInfo: 'Boolean WrapNonExceptionThrows'
Type: 'System.Boolean' Value: 'True'
[ExampleAttribute((ExampleKind)2, Note = "This is a note on the assembly.")]
Constructor: 'Void .ctor(ExampleKind)'
Constructor arguments:
Type: 'ExampleKind' Value: '2'
Named arguments:
MemberInfo: 'System.String Note'
Type: 'System.String' Value: 'This is a note on the assembly.'
Attributes for type: 'Test'
[ExampleAttribute((ExampleKind)1, new String[3] { "String array argument, line 1", "String array argument, line 2", "String array argument, line 3" }, Note = "This is a note on the class.", Numbers = new Int32[3] { 53, 57, 59 })]
Constructor: 'Void .ctor(ExampleKind, System.String[])'
Constructor arguments:
Type: 'ExampleKind' Value: '1'
Array of 'System.String[]':
Type: 'System.String' Value: 'String array argument, line 1'
Type: 'System.String' Value: 'String array argument, line 2'
Type: 'System.String' Value: 'String array argument, line 3'
Named arguments:
MemberInfo: 'System.String Note'
Type: 'System.String' Value: 'This is a note on the class.'
MemberInfo: 'Int32[] Numbers'
Array of 'System.Int32[]':
Type: 'System.Int32' Value: '53'
Type: 'System.Int32' Value: '57'
Type: 'System.Int32' Value: '59'
Attributes for member: 'Void TestMethod(System.Object)'
[ExampleAttribute(Note = "This is a note on a method.")]
Constructor: 'Void .ctor()'
Constructor arguments:
Named arguments:
MemberInfo: 'System.String Note'
Type: 'System.String' Value: 'This is a note on a method.'
Attributes for parameter: 'System.Object arg'
[ExampleAttribute()]
Constructor: 'Void .ctor()'
Constructor arguments:
Named arguments:
*/
using System;
using System.Reflection;
using System.Collections.Generic;
using System.Collections.ObjectModel;
// The example attribute is applied to the assembly.
[assembly:Example(ExampleKind.ThirdKind, Note="This is a note on the assembly.")]
// An enumeration used by the ExampleAttribute class.
public enum ExampleKind
{
FirstKind,
SecondKind,
ThirdKind,
FourthKind
};
// An example attribute. The attribute can be applied to all
// targets, from assemblies to parameters.
//
[AttributeUsage(AttributeTargets.All)]
public class ExampleAttribute : Attribute
{
// Data for properties.
private ExampleKind kindValue;
private string noteValue;
private string[] arrayStrings;
private int[] arrayNumbers;
// Constructors. The parameterless constructor (.ctor) calls
// the constructor that specifies ExampleKind and an array of
// strings, and supplies the default values.
//
public ExampleAttribute(ExampleKind initKind, string[] initStrings)
{
kindValue = initKind;
arrayStrings = initStrings;
}
public ExampleAttribute(ExampleKind initKind) : this(initKind, null) {}
public ExampleAttribute() : this(ExampleKind.FirstKind, null) {}
// Properties. The Note and Numbers properties must be read/write, so they
// can be used as named parameters.
//
public ExampleKind Kind { get { return kindValue; }}
public string[] Strings { get { return arrayStrings; }}
public string Note
{
get { return noteValue; }
set { noteValue = value; }
}
public int[] Numbers
{
get { return arrayNumbers; }
set { arrayNumbers = value; }
}
}
// The example attribute is applied to the test class.
//
[Example(ExampleKind.SecondKind,
new string[] { "String array argument, line 1",
"String array argument, line 2",
"String array argument, line 3" },
Note="This is a note on the class.",
Numbers = new int[] { 53, 57, 59 })]
public class Test
{
// The example attribute is applied to a method, using the
// parameterless constructor and supplying a named argument.
// The attribute is also applied to the method parameter.
//
[Example(Note="This is a note on a method.")]
public void TestMethod([Example] object arg) { }
// Main() gets objects representing the assembly, the test
// type, the test method, and the method parameter. Custom
// attribute data is displayed for each of these.
//
public static void Main()
{
Assembly asm = Assembly.ReflectionOnlyLoad("Source");
Type t = asm.GetType("Test");
MethodInfo m = t.GetMethod("TestMethod");
ParameterInfo[] p = m.GetParameters();
Console.WriteLine("\r\nAttributes for assembly: '{0}'", asm);
ShowAttributeData(CustomAttributeData.GetCustomAttributes(asm));
Console.WriteLine("\r\nAttributes for type: '{0}'", t);
ShowAttributeData(CustomAttributeData.GetCustomAttributes(t));
Console.WriteLine("\r\nAttributes for member: '{0}'", m);
ShowAttributeData(CustomAttributeData.GetCustomAttributes(m));
Console.WriteLine("\r\nAttributes for parameter: '{0}'", p);
ShowAttributeData(CustomAttributeData.GetCustomAttributes(p[0]));
}
private static void ShowAttributeData(
IList<CustomAttributeData> attributes)
{
foreach( CustomAttributeData cad in attributes )
{
Console.WriteLine(" {0}", cad);
Console.WriteLine(" Constructor: '{0}'", cad.Constructor);
Console.WriteLine(" Constructor arguments:");
foreach( CustomAttributeTypedArgument cata
in cad.ConstructorArguments )
{
ShowValueOrArray(cata);
}
Console.WriteLine(" Named arguments:");
foreach( CustomAttributeNamedArgument cana
in cad.NamedArguments )
{
Console.WriteLine(" MemberInfo: '{0}'",
cana.MemberInfo);
ShowValueOrArray(cana.TypedValue);
}
}
}
private static void ShowValueOrArray(CustomAttributeTypedArgument cata)
{
if (cata.Value.GetType() == typeof(ReadOnlyCollection<CustomAttributeTypedArgument>))
{
Console.WriteLine(" Array of '{0}':", cata.ArgumentType);
foreach (CustomAttributeTypedArgument cataElement in
(ReadOnlyCollection<CustomAttributeTypedArgument>) cata.Value)
{
Console.WriteLine(" Type: '{0}' Value: '{1}'",
cataElement.ArgumentType, cataElement.Value);
}
}
else
{
Console.WriteLine(" Type: '{0}' Value: '{1}'",
cata.ArgumentType, cata.Value);
}
}
}
/* This code example produces output similar to the following:
Attributes for assembly: 'source, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
[System.Runtime.CompilerServices.CompilationRelaxationsAttribute((Int32)8)]
Constructor: 'Void .ctor(Int32)'
Constructor arguments:
Type: 'System.Int32' Value: '8'
Named arguments:
[System.Runtime.CompilerServices.RuntimeCompatibilityAttribute(WrapNonExceptionThrows = True)]
Constructor: 'Void .ctor()'
Constructor arguments:
Named arguments:
MemberInfo: 'Boolean WrapNonExceptionThrows'
Type: 'System.Boolean' Value: 'True'
[ExampleAttribute((ExampleKind)2, Note = "This is a note on the assembly.")]
Constructor: 'Void .ctor(ExampleKind)'
Constructor arguments:
Type: 'ExampleKind' Value: '2'
Named arguments:
MemberInfo: 'System.String Note'
Type: 'System.String' Value: 'This is a note on the assembly.'
Attributes for type: 'Test'
[ExampleAttribute((ExampleKind)1, new String[3] { "String array argument, line 1", "String array argument, line 2", "String array argument, line 3" }, Note = "This is a note on the class.", Numbers = new Int32[3] { 53, 57, 59 })]
Constructor: 'Void .ctor(ExampleKind, System.String[])'
Constructor arguments:
Type: 'ExampleKind' Value: '1'
Array of 'System.String[]':
Type: 'System.String' Value: 'String array argument, line 1'
Type: 'System.String' Value: 'String array argument, line 2'
Type: 'System.String' Value: 'String array argument, line 3'
Named arguments:
MemberInfo: 'System.String Note'
Type: 'System.String' Value: 'This is a note on the class.'
MemberInfo: 'Int32[] Numbers'
Array of 'System.Int32[]':
Type: 'System.Int32' Value: '53'
Type: 'System.Int32' Value: '57'
Type: 'System.Int32' Value: '59'
Attributes for member: 'Void TestMethod(System.Object)'
[ExampleAttribute(Note = "This is a note on a method.")]
Constructor: 'Void .ctor()'
Constructor arguments:
Named arguments:
MemberInfo: 'System.String Note'
Type: 'System.String' Value: 'This is a note on a method.'
Attributes for parameter: 'System.Object arg'
[ExampleAttribute()]
Constructor: 'Void .ctor()'
Constructor arguments:
Named arguments:
*/
Imports System.Reflection
Imports System.Collections.Generic
Imports System.Collections.ObjectModel
' The example attribute is applied to the assembly.
<Assembly:Example(ExampleKind.ThirdKind, Note:="This is a note on the assembly.")>
' An enumeration used by the ExampleAttribute class.
Public Enum ExampleKind
FirstKind
SecondKind
ThirdKind
FourthKind
End Enum
' An example attribute. The attribute can be applied to all
' targets, from assemblies to parameters.
'
<AttributeUsage(AttributeTargets.All)> _
Public Class ExampleAttribute
Inherits Attribute
' Data for properties.
Private kindValue As ExampleKind
Private noteValue As String
Private arrayStrings() As String
Private arrayNumbers() As Integer
' Constructors. The parameterless constructor (.ctor) calls
' the constructor that specifies ExampleKind and an array of
' strings, and supplies the default values.
'
Public Sub New(ByVal initKind As ExampleKind, ByVal initStrings() As String)
kindValue = initKind
arrayStrings = initStrings
End Sub
Public Sub New(ByVal initKind As ExampleKind)
Me.New(initKind, Nothing)
End Sub
Public Sub New()
Me.New(ExampleKind.FirstKind, Nothing)
End Sub
' Properties. The Note and Numbers properties must be read/write, so they
' can be used as named parameters.
'
Public ReadOnly Property Kind As ExampleKind
Get
Return kindValue
End Get
End Property
Public ReadOnly Property Strings As String()
Get
Return arrayStrings
End Get
End Property
Public Property Note As String
Get
Return noteValue
End Get
Set
noteValue = value
End Set
End Property
Public Property Numbers As Integer()
Get
Return arrayNumbers
End Get
Set
arrayNumbers = value
End Set
End Property
End Class
' The example attribute is applied to the test class.
'
<Example(ExampleKind.SecondKind, _
New String() { "String array argument, line 1", _
"String array argument, line 2", _
"String array argument, line 3" }, _
Note := "This is a note on the class.", _
Numbers := New Integer() { 53, 57, 59 })> _
Public Class Test
' The example attribute is applied to a method, using the
' parameterless constructor and supplying a named argument.
' The attribute is also applied to the method parameter.
'
<Example(Note:="This is a note on a method.")> _
Public Sub TestMethod(<Example()> ByVal arg As Object)
End Sub
' Sub Main gets objects representing the assembly, the test
' type, the test method, and the method parameter. Custom
' attribute data is displayed for each of these.
'
Public Shared Sub Main()
Dim asm As [Assembly] = Assembly.ReflectionOnlyLoad("source")
Dim t As Type = asm.GetType("Test")
Dim m As MethodInfo = t.GetMethod("TestMethod")
Dim p() As ParameterInfo = m.GetParameters()
Console.WriteLine(vbCrLf & "Attributes for assembly: '{0}'", asm)
ShowAttributeData(CustomAttributeData.GetCustomAttributes(asm))
Console.WriteLine(vbCrLf & "Attributes for type: '{0}'", t)
ShowAttributeData(CustomAttributeData.GetCustomAttributes(t))
Console.WriteLine(vbCrLf & "Attributes for member: '{0}'", m)
ShowAttributeData(CustomAttributeData.GetCustomAttributes(m))
Console.WriteLine(vbCrLf & "Attributes for parameter: '{0}'", p)
ShowAttributeData(CustomAttributeData.GetCustomAttributes(p(0)))
End Sub
Private Shared Sub ShowAttributeData( _
ByVal attributes As IList(Of CustomAttributeData))
For Each cad As CustomAttributeData _
In CType(attributes, IEnumerable(Of CustomAttributeData))
Console.WriteLine(" {0}", cad)
Console.WriteLine(" Constructor: '{0}'", cad.Constructor)
Console.WriteLine(" Constructor arguments:")
For Each cata As CustomAttributeTypedArgument _
In CType(cad.ConstructorArguments, IEnumerable(Of CustomAttributeTypedArgument))
ShowValueOrArray(cata)
Next
Console.WriteLine(" Named arguments:")
For Each cana As CustomAttributeNamedArgument _
In CType(cad.NamedArguments, IEnumerable(Of CustomAttributeNamedArgument))
Console.WriteLine(" MemberInfo: '{0}'", _
cana.MemberInfo)
ShowValueOrArray(cana.TypedValue)
Next
Next
End Sub
Private Shared Sub ShowValueOrArray(ByVal cata As CustomAttributeTypedArgument)
If cata.Value.GetType() Is GetType(ReadOnlyCollection(Of CustomAttributeTypedArgument)) Then
Console.WriteLine(" Array of '{0}':", cata.ArgumentType)
For Each cataElement As CustomAttributeTypedArgument In cata.Value
Console.WriteLine(" Type: '{0}' Value: '{1}'", _
cataElement.ArgumentType, cataElement.Value)
Next
Else
Console.WriteLine(" Type: '{0}' Value: '{1}'", _
cata.ArgumentType, cata.Value)
End If
End Sub
End Class
' This code example produces output similar to the following:
'
'Attributes for assembly: 'source, Version=0.0.0.0, Culture=neutral, PublicKeyToken=null'
' [System.Runtime.CompilerServices.CompilationRelaxationsAttribute((Int32)8)]
' Constructor: 'Void .ctor(Int32)'
' Constructor arguments:
' Type: 'System.Int32' Value: '8'
' Named arguments:
' [System.Runtime.CompilerServices.RuntimeCompatibilityAttribute(WrapNonExceptionThrows = True)]
' Constructor: 'Void .ctor()'
' Constructor arguments:
' Named arguments:
' MemberInfo: 'Boolean WrapNonExceptionThrows'
' Type: 'System.Boolean' Value: 'True'
' [ExampleAttribute((ExampleKind)2, Note = "This is a note on the assembly.")]
' Constructor: 'Void .ctor(ExampleKind)'
' Constructor arguments:
' Type: 'ExampleKind' Value: '2'
' Named arguments:
' MemberInfo: 'System.String Note'
' Type: 'System.String' Value: 'This is a note on the assembly.'
'
'Attributes for type: 'Test'
' [ExampleAttribute((ExampleKind)1, new String[3] { "String array argument, line 1", "String array argument, line 2", "String array argument, line 3" }, Note = "This is a note on the class.", Numbers = new Int32[3] { 53, 57, 59 })]
' Constructor: 'Void .ctor(ExampleKind, System.String[])'
' Constructor arguments:
' Type: 'ExampleKind' Value: '1'
' Array of 'System.String[]':
' Type: 'System.String' Value: 'String array argument, line 1'
' Type: 'System.String' Value: 'String array argument, line 2'
' Type: 'System.String' Value: 'String array argument, line 3'
' Named arguments:
' MemberInfo: 'System.String Note'
' Type: 'System.String' Value: 'This is a note on the class.'
' MemberInfo: 'Int32[] Numbers'
' Array of 'System.Int32[]':
' Type: 'System.Int32' Value: '53'
' Type: 'System.Int32' Value: '57'
' Type: 'System.Int32' Value: '59'
'
'Attributes for member: 'Void TestMethod(System.Object)'
' [ExampleAttribute(Note = "This is a note on a method.")]
' Constructor: 'Void .ctor()'
' Constructor arguments:
' Named arguments:
' MemberInfo: 'System.String Note'
' Type: 'System.String' Value: 'This is a note on a method.'
'
'Attributes for parameter: 'System.Object arg'
' [ExampleAttribute()]
' Constructor: 'Void .ctor()'
' Constructor arguments:
' Named arguments:
注釈
リフレクションのみのコンテキストで調べられているコードは実行できないため、カスタム属性のインスタンスを作成し、 などのメソッドAttribute.GetCustomAttributesMemberInfo.GetCustomAttributesを使用してプロパティを調べることで、カスタム属性を確認できるとは限りません。 属性型自体のコードがリフレクションのみのコンテキストに読み込まれている場合は、実行できません。
クラスを CustomAttributeData 使用すると、属性の抽象化を提供することで、リフレクションのみのコンテキストでカスタム属性を調べることができます。 このクラスのメンバーを使用して、 属性の位置引数と名前付き引数を取得できます。 位置指定引数を ConstructorArguments 表す構造体の CustomAttributeTypedArgument 一覧を取得するには プロパティを使用し、 プロパティを NamedArguments 使用して名前付き引数を表す構造体の CustomAttributeNamedArgument 一覧を取得します。
注意
構造体は CustomAttributeNamedArgument 、引数値の取得と設定に使用される属性プロパティに関する情報のみを提供します。 引数の型と値を取得するには、 プロパティを CustomAttributeNamedArgument.TypedValue 使用して構造体を CustomAttributeTypedArgument 取得します。
引数の CustomAttributeTypedArgument 構造がある場合は、名前付きまたは位置指定に関係なく、 プロパティを CustomAttributeTypedArgument.ArgumentType 使用して型を取得し、 プロパティを CustomAttributeTypedArgument.Value 使用して値を取得します。
注意
配列引数の場合、 プロパティは CustomAttributeTypedArgument.Value オブジェクトのCustomAttributeTypedArgumentジェネリックReadOnlyCollection<T>を返します。 コレクション内の各 CustomAttributeTypedArgument オブジェクトは、配列の対応する要素を表します。
CustomAttributeData は、実行コンテキストとリフレクションのみのコンテキストで使用できます。 たとえば、カスタム属性のコードを含むアセンブリを読み込むのを避けたい場合があります。 クラスの CustomAttributeData 使用は、 のような Attribute.GetCustomAttributesメソッドの使用とは異なります。
の CustomAttributeData プロパティとメソッドは、コンストラクターのセマンティクスではなく、属性インスタンスに指定された値のみを提供します。 たとえば、属性の文字列引数は内部的に他の表現に変換され、正規形式で返される場合があります。または プロパティは、実際の属性コードの実行時に副作用が発生する可能性があります。
の CustomAttributeData プロパティとメソッドでは、基底クラスから継承されたカスタム属性を取得できません。
クラスのインスタンスをCustomAttributeData作成するには、 (Shared
Visual Basic では) GetCustomAttributes ファクトリ メソッドを使用static
します。
コンストラクター
CustomAttributeData() |
CustomAttributeData クラスの新しいインスタンスを初期化します。 |
プロパティ
AttributeType |
属性の型を取得します。 |
Constructor |
カスタム属性を初期化したはずのコンストラクターを表す ConstructorInfo オブジェクトを取得します。 |
ConstructorArguments |
CustomAttributeData オブジェクトが表す属性インスタンスに対して指定された位置指定引数のリストを取得します。 |
NamedArguments |
CustomAttributeData オブジェクトが表す属性インスタンスに対して指定された名前付き引数のリストを取得します。 |
メソッド
Equals(Object) |
このインスタンスが、指定されたオブジェクトと等価であるかどうかを示す値を返します。 |
Equals(Object) |
指定されたオブジェクトが現在のオブジェクトと等しいかどうかを判断します。 (継承元 Object) |
GetCustomAttributes(Assembly) |
ターゲット アセンブリに適用されている属性に関するデータを表す CustomAttributeData オブジェクトのリストを返します。 |
GetCustomAttributes(MemberInfo) |
ターゲット メンバーに適用されている属性に関するデータを表す CustomAttributeData オブジェクトのリストを返します。 |
GetCustomAttributes(Module) |
ターゲット モジュールに適用されている属性に関するデータを表す CustomAttributeData オブジェクトのリストを戻します。 |
GetCustomAttributes(ParameterInfo) |
ターゲット パラメーターに適用されている属性に関するデータを表す CustomAttributeData オブジェクトのリストを戻します。 |
GetHashCode() |
特定の型についてハッシュ関数として機能します。 |
GetHashCode() |
既定のハッシュ関数として機能します。 (継承元 Object) |
GetType() |
現在のインスタンスの Type を取得します。 (継承元 Object) |
MemberwiseClone() |
現在の Object の簡易コピーを作成します。 (継承元 Object) |
ToString() |
カスタム属性の文字列形式を返します。 |
ToString() |
現在のオブジェクトを表す文字列を返します。 (継承元 Object) |
適用対象
こちらもご覧ください
.NET