导出 (0) 打印
全部展开
信息
您所需的主题如下所示。但此主题未包含在此库中。

PropertyInfo.SetValue 方法 (Object, Object, Object[])

2013/12/13

用索引化属性的可选索引值设置指定对象的该属性值。

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 中,只有可访问的属性可通过反射来设置。

这是一种简便的方法,它调用 SetValue(Object, Object, BindingFlags, Binder, Object[], CultureInfo) 方法重载,并将 BindingFlags 参数指定为 BindingFlags.Default,将 Binder 指定为 null,将 CultureInfo 指定为 null

若要使用 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

Windows Phone

显示:
© 2014 Microsoft