次の方法で共有


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

指定したバインディング制約を使用して、指定した引数の型および修飾子と一致するパラメータが設定された指定のプロパティを検索します。

Overloads Public Overridable Function GetProperty( _
   ByVal name As String, _   ByVal bindingAttr As BindingFlags, _   ByVal binder As Binder, _   ByVal returnType As Type, _   ByVal types() As Type, _   ByVal modifiers() As ParameterModifier _) As PropertyInfo Implements IReflect.GetProperty
[C#]
public virtual PropertyInfo GetProperty(stringname,BindingFlagsbindingAttr,Binderbinder,TypereturnType,Type[] types,ParameterModifier[] modifiers);
[C++]
public: virtual PropertyInfo* GetProperty(String* name,BindingFlagsbindingAttr,Binder* binder,Type* returnType,Type* types[],ParameterModifiermodifiers[]);
[JScript]
public function GetProperty(
   name : String,bindingAttr : BindingFlags,binder : Binder,returnType : Type,types : Type[],modifiers : ParameterModifier[]) : PropertyInfo;

パラメータ

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

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

    または

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

  • binder
    一連のプロパティを定義し、バインディングを有効にする Binder オブジェクト。バインディングには、オーバーロードされたメソッドの選択、引数の型の強制変換、リフレクションによるメンバの呼び出しなどが含まれます。

    または

    DefaultBinder を使用する場合は null 参照 (Visual Basic では Nothing) 。

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

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

    または

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

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

戻り値

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

実装

IReflect.GetProperty

例外

例外の種類 条件
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 相互運用機能によって呼び出すときだけに使用され、参照渡しされるパラメータだけが処理されます。

型に対するリフレクション時に Get メソッドによって返される基本クラスのメンバを次の表に示します。

メンバ型 静的 非静的
コンストラクタ いいえ いいえ
フィールド いいえ はい。フィールドは常に名前と署名によって隠ぺいされます。
イベント 適用なし 共通型システムの規則では、継承は、プロパティを実装するメソッドの継承と同じになります。リフレクションは、プロパティを名前と署名によって隠ぺいされているとして扱います。下記のメモ 2 を参照してください。
メソッド いいえ はい。メソッド (仮想メソッドと非仮想メソッドの両方) は、名前によって隠蔽することもできますし、名前と署名によって隠蔽することもできます。
入れ子になった型 いいえ いいえ
プロパティ 適用なし 共通型システムの規則では、継承は、プロパティを実装するメソッドの継承と同じになります。リフレクションは、プロパティを名前と署名によって隠ぺいされているとして扱います。下記のメモ 2 を参照してください。
  1. 名前と署名による隠ぺいでは、カスタム修飾子、戻り値の型、パラメータの型、sentinel、およびアンマネージ呼び出し規約を含めて、署名のすべての部分が判断の対象となります。これはバイナリ比較です。
  2. リフレクションの場合、プロパティおよびイベントは名前と署名によって隠ぺいされています。基本クラスに get アクセサと set アクセサの両方を持つプロパティがあり、派生クラスには get アクセサしかない場合、派生クラスのプロパティにより基本クラスのプロパティが隠ぺいされ、基本クラスの set アクセサにはアクセスできません。
  3. カスタム属性は、共通の型システムの一部ではありません。

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

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

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

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

  • name の大文字と小文字の違いを無視する場合は BindingFlags.IgnoreCase
  • 単に継承されただけのプロパティではなく、 Type で宣言されたプロパティだけを検索する場合は BindingFlags.DeclaredOnly

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

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

必要条件

プラットフォーム: 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.GetProperty オーバーロードの一覧 | PropertyInfo | String | BindingFlags | Binder | DefaultBinder | ParameterModifier | ReflectionPermission | GetPropertyImpl | GetProperties