エクスポート (0) 印刷
すべて展開
情報
要求されたトピックは次のとおりです。しかし、このトピックはこのライブラリには含まれていません。

PropertyInfo.GetValue メソッド (Object, Object[])

2013/12/12

プロパティの値を返します。インデックス付きプロパティの場合は、オプションでインデックス値を返すことができます。

Namespace:  System.Reflection
アセンブリ:  mscorlib (mscorlib.dll 内)

public virtual Object GetValue(
	Object obj,
	Object[] index
)

パラメーター

obj
型: System.Object
プロパティ値が返されるオブジェクト。
index
型: System.Object []
インデックス付きプロパティのインデックス値 (省略可能)。インデックス付きでないプロパティの場合は、この値を null にする必要があります。

戻り値

型: System.Object
obj パラメーターで指定されたオブジェクトのプロパティ値。

例外条件
ArgumentException

index 配列に、必要な引数の型が格納されていません。

または

プロパティの get アクセサーが見つかりません。

TargetException

オブジェクトが対象の型と一致しないか、プロパティがインスタンス プロパティであるが、objnull です。

TargetParameterCountException

index 内のパラメーター数が、インデックス付きプロパティのパラメーター数と一致しません。

MethodAccessException

呼び出し元からプロパティにアクセスできません。

TargetInvocationException

プロパティ値を取得するときにエラーが発生しました。たとえば、インデックス付きプロパティに指定したインデックス値が範囲外です。InnerException プロパティは、例外の原因を示します。

プロパティがインデックス付きかどうかを確認するには、GetIndexParameters メソッドを使用します。結果の配列の要素数が 0 の場合、プロパティはインデックス付けされません。

Windows Phone では、アクセスできるプロパティのみをリフレクションで取得できます。

このメソッドは、BindingFlags パラメーターが Default で、BindernullCultureInfonull を設定した GetValue 抽象メソッドの実装を提供する便宜的なメソッドです。

静的プロパティは個別のオブジェクトではなく型に属するため、静的プロパティを取得するには、オブジェクト引数として null を渡します。たとえば、次のコードを使用すると、CultureInfo の静的な CurrentCulture プロパティを取得できます。

C#
object o = typeof(CultureInfo)
    .GetProperty("CurrentCulture").GetValue(null, null); 
Visual Basic
Dim o As Object = GetType(CultureInfo) _ 
    .GetProperty("CurrentCulture").GetValue(Nothing, Nothing))

GetValue メソッドを使用するには、最初に Type クラスを取得します。次に、その Type から PropertyInfo を取得します。そして、PropertyInfo から GetValue メソッドを使用します。

バージョンについてのメモ

Windows Phone

無効な値を GetValue に渡した場合は、メソッドが、TargetException の代わりに ArgumentNullException をスローします。

インデックスの数が実際の数より小さい場合は、GetValue が、TargetParameterCountException の代わりに ArgumentException をスローします。

インデックス付きプロパティの値を取得する方法の例を次に示します。String.Chars プロパティは、String クラスの既定のプロパティ (C# の場合はインデクサー) です。

メモメモ:

この例を実行するには、「Windows Phone での静的 TextBlock コントロールのあるコード例のビルド」を参照してください。


using System;
using System.Reflection;

class Example
{
    public static void Demo(System.Windows.Controls.TextBlock outputBlock)
    {
        string test = "abcdefghijklmnopqrstuvwxyz";

        // To retrieve the value of the indexed Chars property  using 
        // reflection, create an instance of PropertyInfo for Chars.
        //
        PropertyInfo pinfo = typeof(string).GetProperty("Chars");

        // To retrieve an instance property, the GetValue method
        // requires the object whose property is being accessed, and 
        // an array of objects representing the index values. 

        // Get the seventh character in the test string. 
        // Note that the index is zero-based.
        object[] indexArgs = { 6 };
        object value = pinfo.GetValue(test, indexArgs);
        outputBlock.Text += 
            String.Format("The character at index 6 is \"{0}\".\n", value);

        // Show the complete string, one character at a time.
        for(int i = 0; i < test.Length; i++)
        {
            outputBlock.Text += pinfo.GetValue(test, new object[] { i });
        }
        outputBlock.Text += "\n";
    }
}

/* This example produces the following output:

The character at index 6 is "g".
abcdefghijklmnopqrstuvwxyz
 */


Windows Phone OS

サポート: 8.0, 7.1, 7.0

表示:
© 2014 Microsoft