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

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

2013/12/12

指定したオブジェクトでプロパティの値、およびインデックス付きプロパティの場合はオプションのインデックス値を設定します。

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

public virtual void SetValue(
	Object obj,
	Object value,
	Object[] index
)

パラメーター

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

例外条件
ArgumentException

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

または

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

TargetException

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

TargetParameterCountException

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

MethodAccessException

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

TargetInvocationException

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

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

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

このメソッドは、BindingFlags パラメーターに BindingFlags.DefaultBindernullCultureInfonull を指定して、SetValue(Object, Object, BindingFlags, Binder, Object[], CultureInfo) メソッド オーバーロードを呼び出す便利なメソッドです。

SetValue メソッドを使用するには、まずクラスを表す Type オブジェクトを取得します。そして、その Type から PropertyInfo を取得します。PropertyInfo から、SetValue メソッドを使用します。

指定したオブジェクトに対するプロパティの値を指定した値に設定し、その結果を表示する例を次に示します。

メモメモ:

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


using System;
using System.Reflection;

// Define a class with a property.
public class TestClass
{
   private string caption = "A Default caption";
   public string Caption
   {
      get { return caption; }
      set
      {
         if (caption != value)
         {
            caption = value;
         }
      }
   }
}

class Example
{
   public static void Demo(System.Windows.Controls.TextBlock outputBlock)
   {
      TestClass t = new TestClass();

      // Get the type and PropertyInfo.
      Type myType = t.GetType();
      PropertyInfo pinfo = myType.GetProperty("Caption");

      // Display the property value, using the GetValue method.
      outputBlock.Text += String.Format("\nGetValue: " + pinfo.GetValue(t, null)) + "\n";

      // Use the SetValue method to change the caption.
      pinfo.SetValue(t, "This caption has been changed.", null);

      //  Display the caption again.
      outputBlock.Text += String.Format("GetValue: " + pinfo.GetValue(t, null)) + "\n";
   }
}

/* This example produces the following output:

GetValue: A Default caption
GetValue: This caption has been changed
 */


Windows Phone OS

サポート: 8.0, 7.1, 7.0

表示:
© 2014 Microsoft