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