このページは役に立ちましたか。
このページのコンテンツについての ご意見をお待ちしております
その他にご意見はありますか。
残り 1500 文字
エクスポート (0) 印刷
すべて展開
この記事は翻訳者によって翻訳されたものです。 記事の文章にポインターを重ねると、原文のテキストが表示されます。
訳文
原文

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

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

名前空間:  System
アセンブリ:  mscorlib (mscorlib.dll 内)

public PropertyInfo GetProperty(
	string name,
	BindingFlags bindingAttr,
	Binder binder,
	Type returnType,
	Type[] types,
	ParameterModifier[] modifiers
)

パラメーター

name
型: System.String
取得するプロパティの名前を格納している文字列。
bindingAttr
型: System.Reflection.BindingFlags
検索の実行方法を指定する 1 つ以上の BindingFlags から成るビット マスク。
または
null を返す 0。
binder
型: System.Reflection.Binder
一連のプロパティを定義し、バインディングを有効にするオブジェクト。バインディングには、オーバーロードされたメソッドの選択、引数の型の強制変換、リフレクションによるメンバーの呼び出しなどが含まれます。
または
DefaultBinder を使用する場合は、null 参照 (Visual Basic では Nothing)。
returnType
型: System.Type
プロパティの戻り値の型。
types
型: System.Type[]
取得するインデックス付きプロパティに対するパラメーターの数値、順序、および型を表す Type オブジェクトの配列。
または
インデックス付けされていないプロパティを取得するための、Type 型の空の配列 (Type[] types = new Type[0])。
modifiers
型: System.Reflection.ParameterModifier[]
types 配列内の対応する要素に関連付けられている属性を表す ParameterModifier オブジェクトの配列。 既定のバインダーは、このパラメーターを処理しません。

戻り値

型: System.Reflection.PropertyInfo
指定した要件と一致するプロパティが存在する場合は、そのプロパティを表すオブジェクト。それ以外の場合は null

実装

_Type.GetProperty(String, BindingFlags, Binder, Type, Type[], ParameterModifier[])
IReflect.GetProperty(String, BindingFlags, Binder, Type, Type[], ParameterModifier[])

例外条件
AmbiguousMatchException

指定した名前を持ち、指定したバインディング制約に一致するプロパティが 2 つ以上存在します。

ArgumentNullException

namenull なので、

または

typesnull なので、

ArgumentException

types が多次元です。

または

modifiers が多次元です。

または

typesmodifiers の長さが異なります。

NullReferenceException

types の要素が null です。

パブリックなアクセサーが少なくとも 1 つはあるプロパティは、リフレクションに対してパブリックであると見なされます。 それ以外の場合、プロパティはプライベートと見なされ、BindingFlags.NonPublic を使用する必要があります | BindingFlags.Instance | BindingFlags.Static (Visual Basic では Or を使用して値を組み合わせる) を使用して取得する必要があります。

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

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

メンバーの型

Static

非静的

コンストラクター

不要

不要

フィールド

不要

はい。 フィールドは常に名前と署名によって隠ぺいされます。

イベント

適用なし

共通型システムの規則では、継承は、プロパティを実装するメソッドの継承と同じになります。 リフレクションは、プロパティを名前と署名によって隠ぺいされているとして扱います。 下記のメモ 2 を参照してください。

方法

不要

はい。 メソッド (仮想メソッドと非仮想メソッドの両方) は、名前によって隠蔽することもできますし、名前と署名によって隠蔽することもできます。

入れ子にされた型

不要

不要

プロパティ

適用なし

共通型システムの規則では、継承は、プロパティを実装するメソッドの継承と同じになります。 リフレクションは、プロパティを名前と署名によって隠ぺいされているとして扱います。 下記のメモ 2 を参照してください。

  1. 名前と署名による隠ぺいでは、カスタム修飾子、戻り値の型、パラメーターの型、sentinel、およびアンマネージ呼び出し規約を含めて、署名のすべての部分が判断の対象となります。 これはバイナリ比較です。

  2. リフレクションの場合、プロパティおよびイベントは名前と署名によって隠ぺいされています。 基本クラスに get アクセサーと set アクセサーの両方を持つプロパティがあり、派生クラスには get アクセサーしかない場合、派生クラスのプロパティにより基本クラスのプロパティが隠ぺいされ、基本クラスの set アクセサーにはアクセスできません。

  3. カスタム属性は、共通型システムの一部ではありません。

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

  • 戻り値を取得するには、BindingFlags.Instance または BindingFlags.Static のいずれかを指定する必要があります。

  • 検索対象にパブリック プロパティを含めるための BindingFlags.Public を指定します。

  • 検索対象にパブリックではプロパティ (つまり、プライベート プロパティ、内部プロパティ、およびプロテクト プロパティ) を含めるための BindingFlags.NonPublic を指定します。

  • 階層構造の上位にある public 静的メンバーおよび protected 静的メンバーを検索対象に含めるには、BindingFlags.FlattenHierarchy を指定します。継承クラスの private 静的メンバーは含まれません。

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

  • name の大文字と小文字の違いを無視する場合は BindingFlags.IgnoreCase

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

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

現在の Type が構築ジェネリック型を表している場合、このメソッドは、型パラメーターを適切な型の引数で置き換えて PropertyInfo を返します。

現在の Type がジェネリック型またはジェネリック メソッドの定義の型パラメーターを表している場合、このメソッドはクラス制約のプロパティを検索します。

インデクサーと既定のプロパティ

Visual Basic 2005、Visual C# 2005、および Visual C++ 2005 は、インデックス付きプロパティにアクセスするための簡略化された構文を持っており、1 つのインデックス付きプロパティをその型の既定値とすることができます。 たとえば、変数 myListArrayList を参照する場合、構文 myList[3] (Visual Basic では myList(3)) はインデックスが 3 である要素を取得します。 プロパティはオーバーロードすることができます。

C# の場合、この機能はインデクサーと呼ばれ、名前によって参照できません。 既定では、C# インデクサーは "Item" という名前のインデックス付きプロパティとしてメタデータ内に出現します。 ただし、クラス ライブラリ開発者は、IndexerNameAttribute 属性を使用して、メタデータ内のインデクサーの名前を変更することができます。 たとえば、String クラスには Chars という名前のインデクサーがあります。C# 以外の言語を使用して作成されたインデックス付きプロパティには "Item" 以外の名前を付けることができます。

型に既定のプロパティがあるかどうかを判断するには、GetCustomAttributes(Type, Boolean) メソッドを使用して、DefaultMemberAttribute 属性をテストします。 型が DefaultMemberAttribute を持っている場合、MemberName プロパティは既定のプロパティの名前を返します。

.NET Framework

サポート対象: 4、3.5、3.0、2.0、1.1、1.0

.NET Framework Client Profile

サポート対象: 4、3.5 SP1

Windows 7, Windows Vista SP1 以降, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core はサポート対象外), Windows Server 2008 R2 (SP1 以降で Server Core をサポート), Windows Server 2003 SP2

.NET Framework では、各プラットフォームのすべてのバージョンはサポートしていません。 サポートされているバージョンについては、「.NET Framework システム要件」を参照してください。

コミュニティの追加

追加
表示:
© 2015 Microsoft