次の方法で共有


Type.GetMembers メソッド (BindingFlags)

派生クラスによってオーバーライドされた場合、指定したバインディング制約を使用して、現在の Type に対して定義されているメンバを検索します。

Overloads Public MustOverride Function GetMembers( _
   ByVal bindingAttr As BindingFlags _) As MemberInfo() Implements IReflect.GetMembers
[C#]
public abstract MemberInfo[] GetMembers(BindingFlagsbindingAttr);
[C++]
public: virtual MemberInfo* GetMembers(BindingFlagsbindingAttr) [] = 0;
[JScript]
public abstract function GetMembers(
   bindingAttr : BindingFlags) : MemberInfo[];

パラメータ

  • bindingAttr
    検索の実行方法を指定する 1 つ以上の BindingFlags から成るビット マスク。

    または

    null 参照 (Visual Basic では Nothing) を返す 0。

戻り値

現在の Type に対して定義されているメンバのうち、指定したバインディング制約に一致するすべてのメンバを表す MemberInfo オブジェクトの配列。

または

現在の Type に対してメンバが定義されていないか、または定義されているメンバの中にバインディング制約に一致するものが存在しない場合は、 MemberInfo 型の空の配列。

実装

IReflect.GetMembers

解説

メンバには、プロパティ、メソッド、フィールド、イベントなどがあります。

要求された型がパブリックではなく、呼び出し元に現在のアセンブリ外の非パブリック オブジェクトをリフレクションするための ReflectionPermission がない場合、このメソッドは null 参照 (Visual Basic では Nothing) を返します。

次の BindingFlags フィルタ フラグは、検索対象に含めるメンバを定義するために使用できます。

  • 戻り値を取得するには、 BindingFlags.Instance または BindingFlags.Static のいずれかを指定する必要があります。
  • 検索対象にパブリック メンバを含めるための BindingFlags.Public を指定します。
  • 検索対象にパブリックではないメンバ (つまり、プライベート メンバやプロテクト メンバ) を含めるための BindingFlags.NonPublic を指定します。
  • 階層構造の上位にある静的メンバを含めるための BindingFlags.FlattenHierarchy を指定します。

次の BindingFlags 修飾フラグは、検索方法を変更するために使用できます。

  • 単に継承されただけのメンバではなく、 Type で宣言されたメンバだけを検索する場合は BindingFlags.DeclaredOnly

指定したメンバを返すには、Public フラグだけか、 NonPublic フラグだけを指定してこのメソッドを呼び出します。他のフラグを指定する必要はありません。

詳細については、「 System.Reflection.BindingFlags 」を参照してください。

クラス初期化子は、 GetMemberGetMembersFindMembers 、および GetConstructors を通じて使用できます。

使用例

 
Class [MyClass]
   Public myInt As Integer = 0
   Public myString As String = Nothing
   
   
   Public Sub New()
   End Sub 'New
   
   Public Sub Myfunction()
   End Sub 'Myfunction
End Class '[MyClass]

Class Type_GetMembers_BindingFlags
   
   Public Shared Sub Main()
      Try
         Dim MyObject As New [MyClass]()
         Dim myMemberInfo() As MemberInfo
         
         ' Get the type of the class 'MyClass'.
         Dim myType As Type = MyObject.GetType()
         
         ' Get the public instance members of the class 'MyClass'. 
         myMemberInfo = myType.GetMembers((BindingFlags.Public Or BindingFlags.Instance))
         
         Console.WriteLine(ControlChars.Cr + "The public instance members of class '{0}' are : " + ControlChars.Cr, myType)
         Dim i As Integer
         For i = 0 To myMemberInfo.Length - 1
            ' Display name and type of the member of 'MyClass'.
            Console.WriteLine("'{0}' is a {1}", myMemberInfo(i).Name, myMemberInfo(i).MemberType)
         Next i
      
      Catch e As SecurityException
         Console.WriteLine(("SecurityException : " + e.Message.ToString()))
      End Try
   End Sub 'Main 
End Class 'Type_GetMembers_BindingFlags

[C#] 

class MyClass
{
   public int myInt = 0;
   public string myString = null;

   public MyClass()
   {
   }
   public void Myfunction()
   {
   }
}

class Type_GetMembers_BindingFlags
{
   public static void Main()
   {
      try
      {
         MyClass MyObject = new MyClass();
         MemberInfo [] myMemberInfo; 

         // Get the type of the class 'MyClass'.
         Type myType = MyObject.GetType(); 
        
         // Get the public instance members of the class 'MyClass'. 
         myMemberInfo = myType.GetMembers(BindingFlags.Public|BindingFlags.Instance);
    
         Console.WriteLine( "\nThe public instance members of class '{0}' are : \n", myType); 
         for (int i =0 ; i < myMemberInfo.Length ; i++)
         {
            // Display name and type of the member of 'MyClass'.
            Console.WriteLine( "'{0}' is a {1}", myMemberInfo[i].Name, myMemberInfo[i].MemberType);
         }

      }
      catch (SecurityException e)
      {
         Console.WriteLine("SecurityException : " + e.Message ); 
      }      
   }
}


[C++] 

__gc class MyClass {
public:
    int*  myInt;
    String* myString;
    MyClass() {
    }
    void Myfunction() {
    }
};

int main() {
    try {
        MyClass* MyObject = new MyClass();
        MemberInfo* myMemberInfo[];

        // Get the type of the class 'MyClass'.
        Type*  myType = MyObject->GetType();

        // Get the public instance members of the class 'MyClass'.
        myMemberInfo = myType->GetMembers(static_cast<BindingFlags>(BindingFlags::Public|BindingFlags::Instance));

        Console::WriteLine(S"\nThe public instance members of class '{0}' are : \n", myType);
        for (int i =0 ; i < myMemberInfo->Length ; i++) {
            // Display name and type of the member of 'MyClass'.
            Console::WriteLine(S"'{0}' is a {1}", myMemberInfo[i]->Name,__box( myMemberInfo[i]->MemberType));
        }

    } catch (SecurityException* e) {
        Console::WriteLine(S"SecurityException : {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, Common Language Infrastructure (CLI) Standard

.NET Framework セキュリティ:

参照

Type クラス | Type メンバ | System 名前空間 | Type.GetMembers オーバーロードの一覧 | MemberInfo | BindingFlags | DefaultBinder | ReflectionPermission | GetMember | GetDefaultMembers | FindMembers