次の方法で共有


Type.GetProperty メソッド (String, Type, Type[], ParameterModifier )

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

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

パラメータ

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

  • returnType
    プロパティの戻り値の型。

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

    または

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

  • modifiers
    types 配列内の対応する要素に関連付けられている属性を表す ParameterModifier オブジェクトの配列。既定のバインダは、このパラメータを処理しません。

戻り値

指定した要件と一致するパブリック プロパティが存在する場合は、そのパブリック プロパティを表す PropertyInfo オブジェクト。それ以外の場合は null 参照 (Visual Basic では Nothing) 。

例外

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

または

types が null 参照 (Nothing) です。

または

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

ArgumentException types が多次元です。

または

modifiers が多次元です。

または

types と modifiers の長さが異なります。

解説

既定のバインダは ParameterModifier (modifiers パラメータ) を処理しませんが、 System.Reflection.Binder 抽象クラスを使用して modifiers を処理するカスタム バインダを記述できます。 ParameterModifier は、COM 相互運用機能によって呼び出すときだけに使用され、参照渡しされるパラメータだけが処理されます。

types 配列と modifiers 配列の長さが同じです。types 配列で指定するパラメータには、 modifiers 配列で指定されている pdIn、pdOut、pdLcid、pdRetval、pdOptional、pdHasDefault の各属性を設定できます。これらの属性は、それぞれ [In]、[Out]、[lcid]、[retval]、[optional]、およびパラメータが既定値を持つかどうかを指定する値を表します。パラメータに関連付けられた属性はメタデータに格納され、相互運用性を拡張します。

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

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

使用例

[Visual Basic, C#, C++] MyPropertyClass に対応する Type オブジェクトを取得し、 GetProperty メソッドに渡される引数を使用して、このクラスのインデックス付きプロパティを取得する例を次に示します。

 
Imports System
Imports System.Reflection

Public Class MyPropertyClass
    Private myPropertyArray(9, 9) As Integer
    ' Declare an indexer.
    Default Public Property Item(ByVal i As Integer, ByVal j As Integer) As Integer
        Get
            Return myPropertyArray(i, j)
        End Get
        Set(ByVal Value As Integer)
            myPropertyArray(i, j) = Value
        End Set
    End Property
End Class 'MyPropertyClass

Public Class MyTypeClass
    Public Shared Sub Main()
        Try
            Dim myType As Type = GetType(MyPropertyClass)
            Dim myTypeArray(1) As Type
            ' Create an instance of a Type array representing the number, order 
            ' and type of the parameters for the property.
            myTypeArray.SetValue(GetType(Integer), 0)
            myTypeArray.SetValue(GetType(Integer), 1)
            ' Search for the indexed property whose parameters match the
            ' specified argument types and modifiers.
            Dim myPropertyInfo As PropertyInfo = myType.GetProperty("Item", _
                  GetType(Integer), myTypeArray, Nothing)
            Console.WriteLine(myType.FullName + "." + myPropertyInfo.Name + _
                  " has a property  type of " + myPropertyInfo.PropertyType.ToString())
        Catch ex As Exception
            Console.WriteLine("An exception occurred " + ex.Message.ToString())
        End Try
    End Sub 'Main
End Class 'MyTypeClass

[C#] 
using System;
using System.Reflection;
public class MyPropertyClass
{
    private int [,] myPropertyArray = new int[10,10]; 
    // Declare an indexer.
    public int this [int i,int j]
    {
        get 
        {
            return myPropertyArray[i,j];
        }
        set 
        {
            myPropertyArray[i,j] = value;
        }
    }
}
public class MyTypeClass
{
    public static void Main()
    {
        try
        {
            Type myType=typeof(MyPropertyClass);
            Type[] myTypeArray = new Type[2];
            // Create an instance of the Type array representing the number, order 
            // and type of the parameters for the property.
            myTypeArray.SetValue(typeof(int),0);
            myTypeArray.SetValue(typeof(int),1);
            // Search for the indexed property whose parameters match the
            // specified argument types and modifiers.
            PropertyInfo myPropertyInfo = myType.GetProperty("Item",
                typeof(int),myTypeArray,null);
            Console.WriteLine(myType.FullName + "." + myPropertyInfo.Name + 
                " has a property type of " + myPropertyInfo.PropertyType);
         }
        catch(Exception ex)
        {
            Console.WriteLine("An exception occurred " + ex.Message);
        }
    }
}

[C++] 
#using <mscorlib.dll>

using namespace System;
using namespace System::Reflection;
public __gc class MyPropertyClass {
private:
   int myPropertyArray[,];
   // Declare an indexer.
public:
   __property int get_Item(int i, int j) {
      return myPropertyArray[i, j];

   }
   __property void set_Item(int i, int j, int value) {

      myPropertyArray[i, j] = value;
   }

};

int main() {
   try {
      Type* myType=__typeof(MyPropertyClass);
      Type* myTypeArray[] = new Type*[2];
      // Create an instance of the Type array representing the number, order
      // and type of the parameters for the property.
      myTypeArray->SetValue(__typeof(int), 0);
      myTypeArray->SetValue(__typeof(int), 1);
      // Search for the indexed property whose parameters match the
      // specified argument types and modifiers.
      PropertyInfo*  myPropertyInfo = myType->GetProperty(S"Item",
         __typeof(int), myTypeArray, 0);
      Console::WriteLine(S"{0}.{1} has a property type of {2}", myType->FullName,
         myPropertyInfo->Name, myPropertyInfo->PropertyType);
   } catch (Exception* ex) {
      Console::WriteLine(S"An exception occurred {0}", ex->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

参照

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