MemberInfo.GetCustomAttributes メソッド
派生クラスによってオーバーライドされた場合、このメンバで定義されているすべての属性を返します。
オーバーロードの一覧
派生クラスによってオーバーライドされた場合、すべてのカスタム属性の配列を返します。
.NET Compact Framework でもサポート。
[Visual Basic] Overloads Public MustOverride Function GetCustomAttributes(Boolean) As Object() Implements ICustomAttributeProvider.GetCustomAttributes
[C++] public: virtual Object* GetCustomAttributes(bool) __gc[] = 0;
[JScript] public abstract function GetCustomAttributes(Boolean) : Object[];
派生クラスによってオーバーライドされた場合、 Type で識別されるカスタム属性の配列を返します。
.NET Compact Framework でもサポート。
[C#] public abstract object[] GetCustomAttributes(Type, bool);
[C++] public: virtual Object* GetCustomAttributes(Type*, bool) __gc[] = 0;
[JScript] public abstract function GetCustomAttributes(Type, Boolean) : Object[];
使用例
[Visual Basic, C#, C++] カスタム属性を作成して MyClass.MyMethod に関連付け、実行時にこの属性を取得してその結果を表示する例を次に示します。
[Visual Basic, C#, C++] メモ ここでは、GetCustomAttributes のオーバーロード形式のうちの 1 つだけについて、使用例を示します。その他の例については、各オーバーロード形式のトピックを参照してください。
Imports System
Imports System.Reflection
Imports Microsoft.VisualBasic
' Define a custom attribute with one named parameter.
<AttributeUsage(AttributeTargets.All)> Public Class MyAttribute
Inherits Attribute
Private myName As String
Public Sub New(ByVal name As String)
myName = name
End Sub 'New
Public ReadOnly Property Name() As String
Get
Return myName
End Get
End Property
End Class 'MyAttribute
' Define a class that has the custom attribute associated with one of its members.
Public Class MyClass1
<MyAttribute("This is an example attribute.")> Public Sub MyMethod(ByVal i As Integer)
Return
End Sub 'MyMethod
End Class 'MyClass1
Public Class MemberInfo_GetCustomAttributes
Public Shared Sub Main()
Try
' Get the type of MyClass1.
Dim myType As Type = GetType(MyClass1)
' Get the members associated with MyClass1.
Dim myMembers As MemberInfo() = myType.GetMembers()
' Display the attributes for each of the members of MyClass1.
Dim i As Integer
For i = 0 To myMembers.Length - 1
Dim myAttributes As [Object]() = myMembers(i).GetCustomAttributes(False)
If myAttributes.Length > 0 Then
Console.WriteLine("The attributes for the member {0} are: ", myMembers(i))
Dim j As Integer
For j = 0 To myAttributes.Length - 1
Console.WriteLine("The type of the attribute is: {0}", myAttributes(j))
Next j
End If
Next i
Catch e As Exception
Console.WriteLine("An exception occurred: {0}.", e.Message)
End Try
End Sub 'Main
End Class 'MemberInfo_GetCustomAttributes
[C#]
using System;
using System.Reflection;
// Define a custom attribute with one named parameter.
[AttributeUsage(AttributeTargets.All)]
public class MyAttribute : Attribute
{
private string myName;
public MyAttribute(string name)
{
myName = name;
}
public string Name
{
get
{
return myName;
}
}
}
// Define a class that has the custom attribute associated with one of its members.
public class MyClass1
{
[MyAttribute("This is an example attribute.")]
public void MyMethod(int i)
{
return;
}
}
public class MemberInfo_GetCustomAttributes
{
public static void Main()
{
try
{
// Get the type of MyClass1.
Type myType = typeof(MyClass1);
// Get the members associated with MyClass1.
MemberInfo[] myMembers = myType.GetMembers();
// Display the attributes for each of the members of MyClass1.
for(int i = 0; i < myMembers.Length; i++)
{
Object[] myAttributes = myMembers[i].GetCustomAttributes(true);
if(myAttributes.Length > 0)
{
Console.WriteLine("\nThe attributes for the member {0} are: \n", myMembers[i]);
for(int j = 0; j < myAttributes.Length; j++)
Console.WriteLine("The type of the attribute is {0}.", myAttributes[j]);
}
}
}
catch(Exception e)
{
Console.WriteLine("An exception occurred: {0}", e.Message);
}
}
}
[C++]
#using <mscorlib.dll>
using namespace System;
using namespace System::Reflection;
// Define a custom attribute with one named parameter.
[AttributeUsage(AttributeTargets::All)]
public __gc class MyAttribute : public Attribute
{
private:
String* myName;
public:
MyAttribute(String* name) {
myName = name;
}
__property String* get_Name()
{
return myName;
}
};
// Define a class that has the custom attribute associated with one of its members.
public __gc class MyClass1
{
public:
[MyAttribute(S"This is an example attribute.")]
void MyMethod(int i) {
return;
}
};
int main()
{
try {
// Get the type of MyClass1.
Type* myType = __typeof(MyClass1);
// Get the members associated with MyClass1.
MemberInfo* myMembers[] = myType->GetMembers();
// Display the attributes for each of the members of MyClass1.
for (int i = 0; i < myMembers->Length; i++) {
Object* myAttributes[] = myMembers[i]->GetCustomAttributes(true);
if (myAttributes->Length > 0) {
Console::WriteLine(S"\nThe attributes for the member {0} are: \n", myMembers->Item[i]);
for (int j = 0; j < myAttributes->Length; j++)
Console::WriteLine(S"The type of the attribute is {0}.", myAttributes->Item[j]);
}
}
} catch (Exception* e) {
Console::WriteLine(S"An exception occurred: {0}", e->Message);
}
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。