MemberInfo.IsDefined メソッド
派生クラスによってオーバーライドされた場合、このメンバに attributeType のインスタンスが 1 つ以上定義されているかどうかを示します。
Public MustOverride Function IsDefined( _
ByVal attributeType As Type, _ ByVal inherit As Boolean _) As Boolean Implements ICustomAttributeProvider.IsDefined
[C#]
public abstract bool IsDefined(TypeattributeType,boolinherit);
[C++]
public: virtual bool IsDefined(Type* attributeType,boolinherit) = 0;
[JScript]
public abstract function IsDefined(
attributeType : Type,inherit : Boolean) : Boolean;
パラメータ
- attributeType
カスタム属性を適用する対象の Type オブジェクト。 - inherit
このメンバの継承チェインを検索して属性を見つけるかどうかを指定します。
戻り値
このメンバに attributeType のインスタンスが 1 つ以上定義されている場合は true 。それ以外の場合は false 。
実装
ICustomAttributeProvider.IsDefined
使用例
[Visual Basic, C#, C++] 指定した属性が指定したメンバで定義されているかどうかを調べる例を次に示します。
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_IsDefined
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
' Display the attribute if it is of type MyAttribute.
If myMembers(i).IsDefined(GetType(MyAttribute), False) Then
Dim myAttributes As [Object]() = myMembers(i).GetCustomAttributes(GetType(MyAttribute), False)
Console.WriteLine(ControlChars.Cr + "The attributes of type MyAttribute for the member {0} are: " + ControlChars.Cr, myMembers(i))
Dim j As Integer
For j = 0 To myAttributes.Length - 1
' Display the value associated with the attribute.
Console.WriteLine("The value of the attribute is : ""{0}""", CType(myAttributes(j), MyAttribute).Name)
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_IsDefined
[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_IsDefined
{
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++)
{
// Display the attribute if it is of type MyAttribute.
if(myMembers[i].IsDefined(typeof(MyAttribute), false))
{
Object[] myAttributes = myMembers[i].GetCustomAttributes(typeof(MyAttribute), false);
Console.WriteLine("\nThe attributes of type MyAttribute for the member {0} are: \n",
myMembers[i]);
for(int j = 0; j < myAttributes.Length; j++)
// Display the value associated with the attribute.
Console.WriteLine("The value of the attribute is : \"{0}\"",
((MyAttribute)myAttributes[j]).Name);
}
}
}
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)
{
}
};
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++) {
// Display the attribute if it is of type MyAttribute.
if (myMembers[i]->IsDefined(__typeof(MyAttribute), false)) {
Object* myAttributes[] = myMembers[i]->GetCustomAttributes(__typeof(MyAttribute), false);
Console::WriteLine(S"\nThe attributes of type MyAttribute for the member {0} are: \n",
myMembers->Item[i]);
for (int j = 0; j < myAttributes->Length; j++)
// Display the value associated with the attribute.
Console::WriteLine(S"The value of the attribute is : \"{0}\"",
(__try_cast<MyAttribute*>(myAttributes[j]))->Name);
}
}
} catch (Exception* e) {
Console::WriteLine(S"An exception occurred: {0}", e->Message);
}
}
[JScript] JScript のサンプルはありません。Visual Basic、C#、および C++ のサンプルを表示するには、このページの左上隅にある言語のフィルタ ボタン をクリックします。
必要条件
プラットフォーム: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 ファミリ, .NET Compact Framework - Windows CE .NET