정보
요청한 주제가 아래에 표시됩니다. 그러나 이 주제는 이 라이브러리에 포함되지 않습니다.

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에서는 액세스 가능한 속성만 리플렉션을 사용하여 설정할 수 있습니다.

이 메서드는 BindingFlags 매개 변수에 대해 BindingFlags.Default를 지정하고, Binder에 대해 null을 지정하고 CultureInfo에 대해 null을 지정하여 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

Windows Phone

표시: