次の方法で共有


Type.GetProperties メソッド (BindingFlags)

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

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

パラメータ

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

    または

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

戻り値

現在の Type のプロパティのうち、指定したバインディング制約に一致するすべてのプロパティを表す PropertyInfo オブジェクトの配列。

または

現在の Type にプロパティが設定されていないか、またはプロパティの中でバインディング制約に一致するものが存在しない場合は、 PropertyInfo 型の空の配列。

実装

IReflect.GetProperties

解説

パブリックなアクセサが少なくとも 1 つはあるプロパティは、リフレクションに対してパブリックであると見なされます。つまり、type.GetProperty("propertyname", BindingFlags.Public | BindingFlags.Instance | BindingFlags.Static) を呼び出し、そのプロパティを取得できます。

それ以外の場合は、プロパティはプライベートであると見なされるため、そのプロパティを取得するには type.GetProperty("propertyname", BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static) を使用する必要があります。

次の BindingFlags フィルタ フラグは、入れ子になっている型で、検索対象に含める型を定義するために使用できます。

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

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

  • 単に継承されただけのプロパティではなく、 Type で宣言されたプロパティだけを検索する場合は BindingFlags.DeclaredOnly

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

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

使用例

[Visual Basic, C#, C++] 2 つのパブリック プロパティと 1 つのプロテクト プロパティを作成し、指定したバインディング制約に一致するプロパティの情報を表示する例を次に示します。

 
Imports System
Imports System.Reflection
Imports System.Reflection.Emit
Imports Microsoft.VisualBasic

' Create a class having three properties.
Public Class MyTypeClass
    Public ReadOnly Property MyProperty1() As [String]
        Get
            Return "hello"
        End Get
    End Property
    Public ReadOnly Property MyProperty2() As [String]
        Get
            Return "hello"
        End Get
    End Property
    Protected ReadOnly Property MyProperty3() As [String]
        Get
            Return "hello"
        End Get
    End Property
End Class 'MyTypeClass

Public Class TypeMain
    Public Shared Sub Main()
        Dim myType As Type = GetType(MyTypeClass)
        ' Get the public properties.
        Dim myPropertyInfo As PropertyInfo() = myType.GetProperties((BindingFlags.Public Or BindingFlags.Instance))
        Console.WriteLine("The number of public properties is {0}.", myPropertyInfo.Length.ToString())
        ' Display the public properties.
        DisplayPropertyInfo(myPropertyInfo)
        ' Get the nonpublic properties.
        Dim myPropertyInfo1 As PropertyInfo() = myType.GetProperties((BindingFlags.NonPublic Or BindingFlags.Instance))
        Console.WriteLine("The number of protected properties is {0}.", myPropertyInfo1.Length.ToString())
        ' Display the nonpublic properties.
        DisplayPropertyInfo(myPropertyInfo1)
    End Sub 'Main

    Public Shared Sub DisplayPropertyInfo(ByVal myPropertyInfo() As PropertyInfo)
        ' Display the information for all properties.
        Dim i As Integer
        For i = 0 To myPropertyInfo.Length - 1
            Dim myPropInfo As PropertyInfo = CType(myPropertyInfo(i), PropertyInfo)
            Console.WriteLine("The property name is {0}.", myPropInfo.Name.ToString())
            Console.WriteLine("The property type is {0}.", myPropInfo.PropertyType.ToString())
        Next i
    End Sub 'DisplayPropertyInfo
End Class 'TypeMain 

[C#] 

using System;
using System.Reflection;
using System.Reflection.Emit;

// Create a class having three properties.
public class MyTypeClass
{
    public String MyProperty1
    {
        get 
        {
            return "hello";
        }
    }
    public String MyProperty2 
    {
        get 
        {
            return "hello";
        }
    }
    protected String MyProperty3
    {
        get
        {
            return "hello";
        }
    }
}

public class TypeMain
{
    public static void Main() 
    {
        Type myType =(typeof(MyTypeClass));
        // Get the public properties.
        PropertyInfo[] myPropertyInfo = myType.GetProperties(BindingFlags.Public|BindingFlags.Instance);
        Console.WriteLine("The mumber of public properties is {0}.", myPropertyInfo.Length);
        // Display the public properties.
        DisplayPropertyInfo(myPropertyInfo);
        // Get the nonpublic properties.
        PropertyInfo[] myPropertyInfo1 = myType.GetProperties(BindingFlags.NonPublic|BindingFlags.Instance);
        Console.WriteLine("The number of protected properties is {0}.", myPropertyInfo1.Length);
        // Display all the nonpublic properties.
        DisplayPropertyInfo(myPropertyInfo1);        
    }
    public static void DisplayPropertyInfo(PropertyInfo[] myPropertyInfo)
    {
        // Display information for all properties.
        for(int i=0;i<myPropertyInfo.Length;i++)
        {
            PropertyInfo myPropInfo = (PropertyInfo)myPropertyInfo[i];
            Console.WriteLine("The property name is {0}.", myPropInfo.Name);
            Console.WriteLine("The property type is {0}.", myPropInfo.PropertyType);
        }
    }
}

[C++] 

#using <mscorlib.dll>

using namespace System;
using namespace System::Reflection;
using namespace System::Reflection::Emit;

// Create a class having three properties.
public __gc class MyTypeClass {
public:
   __property String* get_MyProperty1() {
      return S"hello";
   }
   __property String* get_MyProperty2() {
      return S"hello";
   }
protected:
   __property String* get_MyProperty3() {
      return S"hello";
   }
};

void DisplayPropertyInfo(PropertyInfo* myPropertyInfo[]) {
   // Display information for all properties.
   for (int i=0;i<myPropertyInfo->Length;i++) {
      PropertyInfo*  myPropInfo = myPropertyInfo[i];
      Console::WriteLine(S"The property name is {0}.", myPropInfo->Name);
      Console::WriteLine(S"The property type is {0}.", myPropInfo->PropertyType);
   }
}
int main() {
   Type* myType =(__typeof(MyTypeClass));
   // Get the public properties.
   PropertyInfo*  myPropertyInfo[] = myType->GetProperties(static_cast<BindingFlags>(BindingFlags::Public|BindingFlags::Instance));
   Console::WriteLine(S"The mumber of public properties is {0}.",__box(  myPropertyInfo->Length));
   // Display the public properties.
   DisplayPropertyInfo(myPropertyInfo);
   // Get the nonpublic properties.
   PropertyInfo*  myPropertyInfo1[] = myType->GetProperties(static_cast<BindingFlags>(BindingFlags::NonPublic|BindingFlags::Instance));
   Console::WriteLine(S"The number of protected properties is {0}.",__box( myPropertyInfo1->Length));
   // Display all the nonpublic properties.
   DisplayPropertyInfo(myPropertyInfo1);
}

[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

参照

Type クラス | Type メンバ | System 名前空間 | Type.GetProperties オーバーロードの一覧 | PropertyInfo | BindingFlags | DefaultBinder | GetProperty