FieldInfo.SetValue 메서드

정의

지정된 값에 대한 개체의 필드 값을 설정합니다.Sets the value of the field for the given object to the given value.

오버로드

SetValue(Object, Object)

지정된 개체에서 지원하는 필드 값을 설정합니다.Sets the value of the field supported by the given object.

SetValue(Object, Object, BindingFlags, Binder, CultureInfo)

파생 클래스에 재정의할 때 지정된 개체에서 지원하는 필드 값을 설정합니다.When overridden in a derived class, sets the value of the field supported by the given object.

SetValue(Object, Object)

지정된 개체에서 지원하는 필드 값을 설정합니다.Sets the value of the field supported by the given object.

public:
 virtual void SetValue(System::Object ^ obj, System::Object ^ value);
public:
 void SetValue(System::Object ^ obj, System::Object ^ value);
public virtual void SetValue (object obj, object value);
public void SetValue (object obj, object value);
abstract member SetValue : obj * obj -> unit
override this.SetValue : obj * obj -> unit
member this.SetValue : obj * obj -> unit
Public Overridable Sub SetValue (obj As Object, value As Object)
Public Sub SetValue (obj As Object, value As Object)

매개 변수

obj
Object

필드 값이 설정될 개체입니다.The object whose field value will be set.

value
Object

필드에 할당할 값입니다.The value to assign to the field.

구현

예외

Windows 스토어 앱용 .NET 또는 이식 가능한 클래스 라이브러리에서 대신 기본 클래스 예외 MemberAccessException을 catch합니다.In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, MemberAccessException, instead.

호출자에게 이 필드에 액세스할 수 있는 권한이 없는 경우The caller does not have permission to access this field.

Windows 스토어 앱 용 .net 또는 이식 가능한 클래스 라이브러리에서 대신을 catch Exception 합니다.In the .NET for Windows Store apps or the Portable Class Library, catch Exception instead.

obj 매개 변수가 null이고 필드는 인스턴스 필드인 경우The obj parameter is null and the field is an instance field.

필드가 이벤트에 없는 경우The field does not exist on the object.

또는-or- value 매개 변수를 변환하고 필드에 저장할 수 없는 경우The value parameter cannot be converted and stored in the field.

예제

다음 예에서는 필드의 값을 설정 하 고, 값을 가져오고 표시 하 고, 필드를 수정 하 고, 결과를 표시 합니다.The following example sets the value of a field, gets and displays the value, modifies the field, and displays the result.

using namespace System;
using namespace System::Reflection;
using namespace System::Globalization;

public ref class Example
{
private:
   String^ myString;

public:
   Example()
   {
      myString = "Old value";
   }

   property String^ StringProperty 
   {
      String^ get()
      {
         return myString;
      }
   }
};

int main()
{
    Example^ myObject = gcnew Example;
    Type^ myType = Example::typeid;
    FieldInfo^ myFieldInfo = myType->GetField( "myString", 
        BindingFlags::NonPublic | BindingFlags::Instance);
      
    // Display the string before applying SetValue to the field.
    Console::WriteLine( "\nThe field value of myString is \"{0}\".", 
        myFieldInfo->GetValue( myObject ) );
    // Display the SetValue signature used to set the value of a field.
    Console::WriteLine( "Applying SetValue(Object, Object)." );

    // Change the field value using the SetValue method. 
    myFieldInfo->SetValue( myObject, "New value" );     
    // Display the string after applying SetValue to the field.
    Console::WriteLine( "The field value of mystring is \"{0}\".", 
        myFieldInfo->GetValue(myObject));
}
/* This code produces the following output:

The field value of myString is "Old value".
Applying SetValue(Object, Object).
The field value of mystring is "New value".
 */
using System;
using System.Reflection;
using System.Globalization;

public class Example
{
    private string myString;
    public Example()
    {
        myString = "Old value";
    }

    public string StringProperty
    {
        get
        {
            return myString;
        }
    }
}

public class FieldInfo_SetValue
{
    public static void Main()
    {
        Example myObject = new Example();
        Type myType = typeof(Example);
        FieldInfo myFieldInfo = myType.GetField("myString",
            BindingFlags.NonPublic | BindingFlags.Instance);

        // Display the string before applying SetValue to the field.
        Console.WriteLine( "\nThe field value of myString is \"{0}\".",
        myFieldInfo.GetValue(myObject));
        // Display the SetValue signature used to set the value of a field.
        Console.WriteLine( "Applying SetValue(Object, Object).");

        // Change the field value using the SetValue method.
        myFieldInfo.SetValue(myObject, "New value");
        // Display the string after applying SetValue to the field.
        Console.WriteLine( "The field value of mystring is \"{0}\".",
            myFieldInfo.GetValue(myObject));
    }
}

/* This code example produces the following output:

The field value of myString is "Old value".
Applying SetValue(Object, Object).
The field value of mystring is "New value".
 */
Imports System.Reflection
Imports System.Globalization

Public Class Example
   Private myString As String
   
   Public Sub New()
      myString = "Old value"
   End Sub 
   
   ReadOnly Property StringProperty() As String
      Get
         Return myString
      End Get
   End Property
End Class 


Public Module FieldInfo_SetValue
   
   Sub Main()

        Dim myObject As New Example()
        Dim myType As Type = GetType(Example)
        Dim myFieldInfo As FieldInfo = myType.GetField("myString", _
           BindingFlags.NonPublic Or BindingFlags.Instance)

        ' Display the string before applying SetValue to the field.
        Console.WriteLine(vbCrLf & "The field value of myString is ""{0}"".", _
            myFieldInfo.GetValue(myObject))
        ' Display the SetValue signature used to set the value of a field.
        Console.WriteLine("Applying SetValue(Object, Object).")

        ' Change the field value using the SetValue method. 
        myFieldInfo.SetValue(myObject, "New value")
        ' Display the string after applying SetValue to the field.
        Console.WriteLine("The field value of mystring is ""{0}"".", _
            myFieldInfo.GetValue(myObject))

    End Sub 
End Module

' This code example produces the following output:
' The field value of myString is "Old value".
' Applying SetValue(Object, Object).
' The field value of mystring is "New value".

설명

이 메서드는 value 개체에 대해이 인스턴스에서 리플렉션된 필드에 할당 합니다 obj .This method will assign value to the field reflected by this instance on object obj. 필드가 정적일 경우 obj 는 무시 됩니다.If the field is static, obj will be ignored. 비정적 필드의 경우는 obj 필드를 상속 하거나 선언 하는 클래스의 인스턴스여야 합니다.For non-static fields, obj should be an instance of a class that inherits or declares the field. 새 값은으로 전달 됩니다 Object .The new value is passed as an Object. 예를 들어 필드의 형식이 부울 인 경우 Object 적절 한 부울 값을 사용 하 여의 인스턴스가 전달 됩니다.For example, if the field's type is Boolean, an instance of Object with the appropriate Boolean value is passed. 값을 설정 하기 전에는 SetValue 사용자에 게 액세스 권한이 있는지 확인 합니다.Before setting the value, SetValue checks to see if the user has access permission. 이 최종 메서드는 다음 메서드를 호출 하는 편리한 방법입니다 SetValue .This final method is a convenience method for calling the following SetValue method.

이 메서드는 정적, init 전용 ( readonly c #) 필드의 값을 안정적으로 설정 하는 데 사용할 수 없습니다.This method cannot be used to set values of static, init-only (readonly in C#) fields reliably. .NET Core 3.0 이상 버전에서 정적, init 전용 필드에 값을 설정 하려고 하면 예외가 throw 됩니다.In .NET Core 3.0 and later versions, an exception is thrown if you attempt to set a value on a static, init-only field.

참고

완전히 신뢰할 수 있는 코드에는 리플렉션을 사용 하 여 전용 생성자, 메서드, 필드 및 속성에 액세스 하 고 호출 하는 데 필요한 권한이 있습니다.Fully trusted code has the permissions that are needed to access and invoke private constructors, methods, fields, and properties using reflection.

참고

부터 호출자에 .NET Framework 2.0 서비스 팩 1.NET Framework 2.0 Service Pack 1 게 플래그가 부여 되 ReflectionPermission ReflectionPermissionFlag.RestrictedMemberAccess 고 public이 아닌 멤버의 권한 부여 집합이 호출자의 권한 부여 집합 또는 그 하위 집합으로 제한 된 경우에는이 메서드를 사용 하 여 public이 아닌 멤버에 액세스할 수 있습니다.Starting with the .NET Framework 2.0 서비스 팩 1.NET Framework 2.0 Service Pack 1, this method can be used to access non-public members if the caller has been granted ReflectionPermission with the ReflectionPermissionFlag.RestrictedMemberAccess flag and if the grant set of the non-public members is restricted to the caller's grant set, or a subset thereof. 리플렉션의 보안 고려 사항을 참조 하세요.(See Security Considerations for Reflection.)

이 기능을 사용하려면 애플리케이션이 .NET Framework 3.5.NET Framework 3.5 이상을 대상으로 해야 합니다.To use this functionality, your application should target the .NET Framework 3.5.NET Framework 3.5 or later.

적용 대상

제품 도입

SetValue(Object, Object, BindingFlags, Binder, CultureInfo)

파생 클래스에 재정의할 때 지정된 개체에서 지원하는 필드 값을 설정합니다.When overridden in a derived class, sets the value of the field supported by the given object.

public:
 abstract void SetValue(System::Object ^ obj, System::Object ^ value, System::Reflection::BindingFlags invokeAttr, System::Reflection::Binder ^ binder, System::Globalization::CultureInfo ^ culture);
public abstract void SetValue (object obj, object value, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Globalization.CultureInfo culture);
abstract member SetValue : obj * obj * System.Reflection.BindingFlags * System.Reflection.Binder * System.Globalization.CultureInfo -> unit
Public MustOverride Sub SetValue (obj As Object, value As Object, invokeAttr As BindingFlags, binder As Binder, culture As CultureInfo)

매개 변수

obj
Object

필드 값이 설정될 개체입니다.The object whose field value will be set.

value
Object

필드에 할당할 값입니다.The value to assign to the field.

invokeAttr
BindingFlags

필요한 바인딩 형식을 지정하는 Binder 필드(예: Binder.CreateInstance 또는 Binder.ExactBinding)입니다.A field of Binder that specifies the type of binding that is desired (for example, Binder.CreateInstance or Binder.ExactBinding).

binder
Binder

리플렉션을 통해 바인딩, 인수의 형식 변환 및 멤버 호출을 가능하게 하는 속성 집합입니다.A set of properties that enables the binding, coercion of argument types, and invocation of members through reflection. bindernull이면 Binder.DefaultBinding가 사용됩니다.If binder is null, then Binder.DefaultBinding is used.

culture
CultureInfo

특정 문화권의 소프트웨어 기본 설정입니다.The software preferences of a particular culture.

구현

예외

호출자에게 이 필드에 액세스할 수 있는 권한이 없는 경우The caller does not have permission to access this field.

obj 매개 변수가 null이고 필드는 인스턴스 필드인 경우The obj parameter is null and the field is an instance field.

필드가 이벤트에 없는 경우The field does not exist on the object.

또는-or- value 매개 변수를 변환하고 필드에 저장할 수 없는 경우The value parameter cannot be converted and stored in the field.

설명

이 메서드는 value 의이 인스턴스에서 리플렉션된 필드에를 할당 obj 합니다.This method will assign value to the field reflected by this instance on obj. 필드가 정적일 경우 obj 는 무시 됩니다.If the field is static, obj will be ignored. 비정적 필드의 경우는 obj 필드를 상속 하거나 선언 하는 클래스의 인스턴스여야 합니다.For non-static fields, obj should be an instance of a class that inherits or declares the field. 새 값은으로 전달 됩니다 Object .The new value is passed as an Object. 예를 들어 필드의 형식이 인 경우 Boolean Object 적절 한 부울 값을 가진 인스턴스가 전달 됩니다.For example, if the field's type is Boolean, an instance of Object with the appropriate Boolean value is passed. 값을 설정 하기 전에는 SetValue 사용자에 게 액세스 권한이 있는지 확인 합니다.Before setting the value, SetValue checks to see if the user has access permission.

이 메서드는 정적, init 전용 ( readonly c #) 필드의 값을 안정적으로 설정 하는 데 사용할 수 없습니다.This method cannot be used to set values of static, init-only (readonly in C#) fields reliably. .NET Core 3.0 이상 버전에서 정적, init 전용 필드에 값을 설정 하려고 하면 예외가 throw 됩니다.In .NET Core 3.0 and later versions, an exception is thrown if you attempt to set a value on a static, init-only field.

참고

완전히 신뢰할 수 있는 코드에는 리플렉션을 사용 하 여 전용 생성자, 메서드, 필드 및 속성에 액세스 하 고 호출 하는 데 필요한 권한이 있습니다.Fully trusted code has the permissions that are needed to access and invoke private constructors, methods, fields, and properties using reflection.

참고

부터 호출자에 .NET Framework 2.0 서비스 팩 1.NET Framework 2.0 Service Pack 1 게 플래그가 부여 되 ReflectionPermission ReflectionPermissionFlag.RestrictedMemberAccess 고 public이 아닌 멤버의 권한 부여 집합이 호출자의 권한 부여 집합 또는 그 하위 집합으로 제한 된 경우에는이 메서드를 사용 하 여 public이 아닌 멤버에 액세스할 수 있습니다.Starting with the .NET Framework 2.0 서비스 팩 1.NET Framework 2.0 Service Pack 1, this method can be used to access non-public members if the caller has been granted ReflectionPermission with the ReflectionPermissionFlag.RestrictedMemberAccess flag and if the grant set of the non-public members is restricted to the caller's grant set, or a subset thereof. 리플렉션의 보안 고려 사항을 참조 하세요.(See Security Considerations for Reflection.)

이 기능을 사용하려면 애플리케이션이 .NET Framework 3.5.NET Framework 3.5 이상을 대상으로 해야 합니다.To use this functionality, your application should target the .NET Framework 3.5.NET Framework 3.5 or later.

적용 대상

제품 도입