Type.FilterAttribute フィールド
属性に適用するメンバ フィルタを表します。このフィールドは読み取り専用です。
Public Shared ReadOnly FilterAttribute As MemberFilter
[C#]
public static readonly MemberFilter FilterAttribute;
[C++]
public: static MemberFilter* FilterAttribute;
[JScript]
public static var FilterAttribute : MemberFilter;
解説
このフィールドは、 FindMembers メソッドで使用されるデリゲートへの参照を保持します。このデリゲートによってカプセル化されたメソッドは、 MemberInfo オブジェクト、Object という 2 つのパラメータを受け取ります。このメソッドは、 MemberInfo オブジェクトが Object に指定した基準に一致するかどうかを判断します。Object には、 FieldAttributes クラス、 MethodAttributes クラス、または MethodImplAttributes クラスの任意のフィールドの値を割り当てることができます。
たとえば、Object には、Public など、 FieldAttributes のフィールドの値を割り当てることができます。この場合、 FilterAttribute デリゲートが呼び出されると、呼び出されたデリゲートは、 MemberInfo オブジェクトで表されるメソッドがメタデータでパブリック フィールド属性を使用して修飾されている場合にだけ true を返します。
使用例
[Visual Basic, C#, C++] FilterAttribute デリゲートを取得し、これをパラメータとして FindMembers メソッドに渡して、指定されたメンバとそれらの属性を表示する例を次に示します。
Imports System
Imports System.Reflection
Imports System.Security
Imports Microsoft.VisualBasic
Public Class MyFilterAttributeSample
Public Shared Sub Main()
Try
Dim myFilter As MemberFilter = Type.FilterAttribute
Dim myType As Type = GetType(System.String)
Dim myMemberInfoArray As MemberInfo() = myType.FindMembers(MemberTypes.Constructor Or MemberTypes.Method, BindingFlags.Public Or BindingFlags.Static Or BindingFlags.Instance, myFilter, MethodAttributes.SpecialName)
Dim myMemberinfo As MemberInfo
For Each myMemberinfo In myMemberInfoArray
Console.Write(ControlChars.newline + myMemberinfo.Name)
Console.Write(" is a " + myMemberinfo.MemberType.ToString())
Next myMemberinfo
Catch e As ArgumentNullException
Console.Write("ArgumentNullException : " + e.Message.ToString())
Catch e As SecurityException
Console.Write("SecurityException : " + e.Message.ToString())
Catch e As Exception
Console.Write("Exception :" + e.Message.ToString())
End Try
End Sub 'Main
End Class 'MyFilterAttributeSample
[C#]
using System;
using System.Reflection;
using System.Security;
public class MyFilterAttributeSample
{
public static void Main()
{
try
{
MemberFilter myFilter = Type.FilterAttribute;
Type myType = typeof(System.String);
MemberInfo[] myMemberInfoArray = myType.FindMembers(MemberTypes.Constructor
|MemberTypes.Method, BindingFlags.Public | BindingFlags.Static |
BindingFlags.Instance, myFilter, MethodAttributes.SpecialName);
foreach (MemberInfo myMemberinfo in myMemberInfoArray)
{
Console.Write ("\n" + myMemberinfo.Name);
Console.Write (" is a " + myMemberinfo.MemberType.ToString());
}
}
catch(ArgumentNullException e)
{
Console.Write("ArgumentNullException : " + e.Message);
}
catch(SecurityException e)
{
Console.Write("SecurityException : " + e.Message);
}
catch(Exception e)
{
Console.Write("Exception :" + e.Message);
}
}
}
[C++]
#using <mscorlib.dll>
using namespace System;
using namespace System::Collections;
using namespace System::Reflection;
using namespace System::Security;
int main() {
try {
MemberFilter* myFilter = Type::FilterAttribute;
Type* myType = __typeof(System::String);
MemberInfo* myMemberInfoArray[] = myType->FindMembers(
static_cast<MemberTypes>(MemberTypes::Constructor |MemberTypes::Method),
static_cast<BindingFlags>(BindingFlags::Public | BindingFlags::Static | BindingFlags::Instance),
myFilter, __box(MethodAttributes::SpecialName));
IEnumerator* myEnum = myMemberInfoArray->GetEnumerator();
while (myEnum->MoveNext()) {
MemberInfo* myMemberinfo = __try_cast<MemberInfo*>(myEnum->Current);
Console::Write (S"\n {0}", myMemberinfo->Name);
Console::Write (S" is a {0}", __box(myMemberinfo->MemberType));
}
} catch (ArgumentNullException* e) {
Console::Write(S"ArgumentNullException : {0}", e->Message);
} catch (SecurityException* e) {
Console::Write(S"SecurityException : {0}", e->Message);
} catch (Exception* e) {
Console::Write(S"Exception : {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 ファミリ
参照
Type クラス | Type メンバ | System 名前空間 | FindMembers | MemberFilter