次の方法で共有


Type.GetProperty メソッド (String, Type )

指定したパブリック プロパティのうち、指定した引数型と一致するパラメータが設定されているものを検索します。

Overloads Public Function GetProperty( _
   ByVal name As String, _   ByVal types() As Type _) As PropertyInfo
[C#]
public PropertyInfo GetProperty(stringname,Type[] types);
[C++]
public: PropertyInfo* GetProperty(String* name,Type* types[]);
[JScript]
public function GetProperty(
   name : String,types : Type[]) : PropertyInfo;

パラメータ

  • name
    取得するパブリック プロパティの名前を格納している String

  • types
    取得するインデックス付きプロパティに対するパラメータの数値、順序、および型を表す Type オブジェクトの配列。

    または

    インデックス付けされていないプロパティを取得するための、 Type 型の空の配列 (Type[] types = new Type[0])。

戻り値

指定した引数型と一致するパラメータが設定されているパブリック プロパティが存在する場合は、そのパブリック プロパティを表す PropertyInfo オブジェクト。それ以外の場合は null 参照 (Visual Basic では Nothing) 。

例外

例外の種類 条件
AmbiguousMatchException 指定した名前と、指定した引数型に一致するパラメータを持つプロパティが 2 つ以上存在します。
ArgumentNullException name が null 参照 (Visual Basic では Nothing) です。

または

types が null 参照 (Nothing) です。

または

types の 1 つの要素が null 参照 (Nothing) です。

ArgumentException types が多次元です。

解説

name の検索では大文字と小文字が区別されます。

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

使用例

[Visual Basic, C#, C++] ユーザー定義クラスの Type オブジェクトと、そのクラスのプロパティを取得して、 GetProperty に渡される引数の指定に従ってプロパティ名とプロパティの型を表示する例を次に示します。

 
Imports System
Imports System.Reflection

Module Module1
    Class MyClass1
        Private myArray As Integer(,) = {{1, 2}, {3, 4}}
        ' Declare an indexer.
        Default Public Property Item(ByVal i As Integer, ByVal j As Integer) As Integer
            Get
                Return myArray(i, j)
            End Get
            Set(ByVal Value As Integer)

                myArray(i, j) = Value
            End Set
        End Property
    End Class 'MyClass1

    Public Class MyTypeClass
        Public Shared Sub Main()
            Try
                ' Get the Type Object.
                Dim myType As Type = GetType(MyClass1)
                Dim myTypeArr(1) As Type
                ' Create an instance of a Type array.
                myTypeArr.SetValue(GetType(Integer), 0)
                myTypeArr.SetValue(GetType(Integer), 1)
                ' Get the PropertyInfo object for the indexed property Item, which has two integer parameters. 
                Dim myPropInfo As PropertyInfo = myType.GetProperty("Item", myTypeArr)
                ' Display the property.
                Console.WriteLine("The {0} property exists in MyClass1.", myPropInfo.ToString())
            Catch e As NullReferenceException
                Console.WriteLine("An exception occurred.")
                Console.WriteLine("Source : {0}", e.Source.ToString())
                Console.WriteLine("Message : {0}", e.Message.ToString())
            End Try
        End Sub 'Main
    End Class 'MyTypeClass
End Module 'Module1

[C#] 

using System;
using System.Reflection;
class MyClass1
{         
    private int [,] myArray = {{1,2},{3,4}}; 
    // Declare an indexer.
    public int this [int i,int j]   
    {
        get 
        {
            return myArray[i,j];
        }
        set 
        {
            myArray[i,j] = value;
        }
    }
}
public class MyTypeClass
{
    public static void Main(string[] args)
    {
        try
        { 
            // Get the Type object.
            Type myType=typeof(MyClass1);       
            Type[] myTypeArr = new Type[2];
            // Create an instance of a Type array.
            myTypeArr.SetValue(typeof(int),0);            
            myTypeArr.SetValue(typeof(int),1);
            // Get the PropertyInfo object for the indexed property Item, which has two integer parameters. 
            PropertyInfo myPropInfo = myType.GetProperty("Item", myTypeArr);
            // Display the property.
            Console.WriteLine("The {0} property exists in MyClass1.", myPropInfo.ToString());
        }           
        catch(NullReferenceException e)
        {
            Console.WriteLine("An exception occurred.");
            Console.WriteLine("Source : {0}" , e.Source);
            Console.WriteLine("Message : {0}" , e.Message);
        }
    }
}

[C++] 

#using <mscorlib.dll>

using namespace System;
using namespace System::Reflection;

__gc class MyClass1 {
private:
   int myArray[,];

   // Declare an indexer.
public:
   __property int get_Item (int i, int j) {
      return myArray[i, j];
   }
   __property void set_Item(int i, int j, int value) {
      myArray[i, j] = value;
   }
};

int main() {
   try {
      // Get the Type object.
      Type* myType=__typeof(MyClass1);
      Type* myTypeArr[] = new Type*[2];
      // Create an instance of a Type array.
      myTypeArr->SetValue(__typeof(int), 0);
      myTypeArr->SetValue(__typeof(int), 1);
      // Get the PropertyInfo object for the indexed property Item, which has two integer parameters.
      PropertyInfo*  myPropInfo = myType->GetProperty(S"Item", myTypeArr);
      // Display the property.
      Console::WriteLine(S"The {0} property exists in MyClass1.", myPropInfo);
   } catch (NullReferenceException* e) {
      Console::WriteLine(S"An exception occurred.");
      Console::WriteLine(S"Source : {0}" , e->Source);
      Console::WriteLine(S"Message : {0}" , e->Message);
   }
}

[Visual Basic, C#, C++] 内部的には、このプロパティはメタデータで "Item" という名前で参照されます。したがって、リフレクションを使用して PropertyInfo を取得する場合は、正しい PropertyInfo が返されるように、この内部名を指定する必要があります。

[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 ファミリ, Common Language Infrastructure (CLI) Standard

参照

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