FieldInfo.SetValue FieldInfo.SetValue FieldInfo.SetValue FieldInfo.SetValue Method

Definición

Establece el valor del campo para el objeto especificado en el valor indicado.Sets the value of the field for the given object to the given value.

Sobrecargas

SetValue(Object, Object) SetValue(Object, Object) SetValue(Object, Object) SetValue(Object, Object)

Establece el valor del campo admitido por el objeto determinado.Sets the value of the field supported by the given object.

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

Cuando se reemplaza en una clase derivada, se establece el valor del campo compatible con el objeto dado.When overridden in a derived class, sets the value of the field supported by the given object.

SetValue(Object, Object) SetValue(Object, Object) SetValue(Object, Object) SetValue(Object, Object)

Establece el valor del campo admitido por el objeto determinado.Sets the value of the field supported by the given object.

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

Parámetros

obj
Object Object Object Object

Objeto cuyo valor de campo se va a establecer.The object whose field value will be set.

value
Object Object Object Object

Valor que se va a asignar al campo.The value to assign to the field.

Implementaciones

Excepciones

En .NET para aplicaciones de la Tienda Windows o la Biblioteca de clases portable, capture en su lugar la excepción de clase base, MemberAccessException.In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, MemberAccessException, instead.

El autor de la llamada no tiene permiso para acceder a este campo.The caller does not have permission to access this field.

En .NET para aplicaciones de la Tienda Windows o la Biblioteca de clases portable, capture Exception en su lugar.In the .NET for Windows Store apps or the Portable Class Library, catch Exception instead.

El parámetro obj es null y el campo es un campo de instancia.The obj parameter is null and the field is an instance field.

Este campo no existe en el objeto.The field does not exist on the object.

O bien-or- El parámetro value no puede convertirse y almacenarse en el campo.The value parameter cannot be converted and stored in the field.

Ejemplos

El ejemplo siguiente establece el valor de un campo, obtiene y muestra el valor, modifica el campo y muestra el resultado.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
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".

Comentarios

Este método asignará value al campo reflejado por esta instancia en el objeto obj.This method will assign value to the field reflected by this instance on object obj. Si el campo es estático, obj se pasará por alto.If the field is static, obj will be ignored. Para los campos no estáticos, obj debe ser una instancia de una clase que hereda o declara el campo.For non-static fields, obj should be an instance of a class that inherits or declares the field. El nuevo valor se pasa como un Object.The new value is passed as an Object. Por ejemplo, si el tipo del campo es booleano, una instancia de Object con el valor booleano correspondiente valor se pasa.For example, if the field's type is Boolean, an instance of Object with the appropriate Boolean value is passed. Antes de establecer el valor de SetValue comprueba si el usuario tiene permiso de acceso.Before setting the value, SetValue checks to see if the user has access permission. Este último método es un método de conveniencia para llamar al siguiente SetValue método.This final method is a convenience method for calling the following SetValue method.

Nota

Código de plena confianza tiene los permisos necesarios para obtener acceso e invocar constructores privados, métodos, campos y propiedades mediante reflexión.Fully trusted code has the permissions that are needed to access and invoke private constructors, methods, fields, and properties using reflection.

Nota

A partir de la .NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1, este método puede utilizarse para tener acceso a miembros no públicos, si el llamador tiene concedidos ReflectionPermission con el ReflectionPermissionFlag.RestrictedMemberAccess marca y si el conjunto de permisos de los miembros no públicos se restringe al llamador conceder el conjunto o un subconjunto en ella.Starting with the .NET Framework 2.0 Service Pack 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. (Consulte consideraciones de seguridad para la reflexión.)(See Security Considerations for Reflection.)

Para utilizar esta funcionalidad, la aplicación debe utilizar .NET Framework 3,5.NET Framework 3.5 o posterior como destino.To use this functionality, your application should target the .NET Framework 3,5.NET Framework 3.5 or later.

Seguridad

ReflectionPermission
Cuando se invoca en tiempo de ejecución a través de mecanismos como InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]).when invoked late-bound through mechanisms such as InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]). Enumeración asociada: MemberAccess.Associated enumeration: MemberAccess.

SecurityPermission
Para actualizar los campos de solo init.for updating init-only fields. Enumeración asociada: SerializationFormatter.Associated enumeration: SerializationFormatter.

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

Cuando se reemplaza en una clase derivada, se establece el valor del campo compatible con el objeto dado.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

Parámetros

obj
Object Object Object Object

Objeto cuyo valor de campo se va a establecer.The object whose field value will be set.

value
Object Object Object Object

Valor que se va a asignar al campo.The value to assign to the field.

invokeAttr
BindingFlags BindingFlags BindingFlags BindingFlags

Campo de Binder que especifica el tipo de enlace deseado (por ejemplo, Binder.CreateInstance o Binder.ExactBinding).A field of Binder that specifies the type of binding that is desired (for example, Binder.CreateInstance or Binder.ExactBinding).

binder
Binder Binder Binder Binder

Conjunto de propiedades que habilitan el enlace, la conversión de tipos de argumentos y las llamadas a miembros mediante Reflection.A set of properties that enables the binding, coercion of argument types, and invocation of members through reflection. Si el valor de binder es null, se usa Binder.DefaultBinding.If binder is null, then Binder.DefaultBinding is used.

culture
CultureInfo CultureInfo CultureInfo CultureInfo

Preferencias de software de una referencia cultural determinada.The software preferences of a particular culture.

Implementaciones

Excepciones

El autor de la llamada no tiene permiso para acceder a este campo.The caller does not have permission to access this field.

El parámetro obj es null y el campo es un campo de instancia.The obj parameter is null and the field is an instance field.

Este campo no existe en el objeto.The field does not exist on the object.

O bien-or- El parámetro value no puede convertirse y almacenarse en el campo.The value parameter cannot be converted and stored in the field.

Comentarios

Este método asignará value al campo reflejado por esta instancia en obj.This method will assign value to the field reflected by this instance on obj. Si el campo es estático, obj se pasará por alto.If the field is static, obj will be ignored. Para los campos no estáticos, obj debe ser una instancia de una clase que hereda o declara el campo.For non-static fields, obj should be an instance of a class that inherits or declares the field. El nuevo valor se pasa como un Object.The new value is passed as an Object. Por ejemplo, si el tipo del campo es Boolean, una instancia de Object con el valor booleano correspondiente valor se pasa.For example, if the field's type is Boolean, an instance of Object with the appropriate Boolean value is passed. Antes de establecer el valor de SetValue comprueba si el usuario tiene permiso de acceso.Before setting the value, SetValue checks to see if the user has access permission.

Nota

Código de plena confianza tiene los permisos necesarios para obtener acceso e invocar constructores privados, métodos, campos y propiedades mediante reflexión.Fully trusted code has the permissions that are needed to access and invoke private constructors, methods, fields, and properties using reflection.

Nota

A partir de la .NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1, este método puede utilizarse para tener acceso a miembros no públicos, si el llamador tiene concedidos ReflectionPermission con el ReflectionPermissionFlag.RestrictedMemberAccess marca y si el conjunto de permisos de los miembros no públicos se restringe al llamador conceder el conjunto o un subconjunto en ella.Starting with the .NET Framework 2.0 Service Pack 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. (Consulte consideraciones de seguridad para la reflexión.)(See Security Considerations for Reflection.)

Para utilizar esta funcionalidad, la aplicación debe utilizar .NET Framework 3,5.NET Framework 3.5 o posterior como destino.To use this functionality, your application should target the .NET Framework 3,5.NET Framework 3.5 or later.

Seguridad

ReflectionPermission
Cuando se invoca en tiempo de ejecución a través de mecanismos como InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]).when invoked late-bound through mechanisms such as InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]). Enumeración asociada: MemberAccess.Associated enumeration: MemberAccess.

SecurityPermission
Para actualizar los campos de solo init.for updating init-only fields. Enumeración asociada: SerializationFormatter.Associated enumeration: SerializationFormatter.

Se aplica a