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

Definizione

Imposta il valore del campo per il dato oggetto sul valore specificato.Sets the value of the field for the given object to the given value.

Overload

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

Imposta il valore del campo supportato dall'oggetto specificato.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)

Quando se ne effettua l'override in una classe derivata, imposta il valore del campo supportato dall'oggetto dato.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)

Imposta il valore del campo supportato dall'oggetto specificato.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)

Parametri

obj
Object Object Object Object

Oggetto di cui verrà impostato il valore del campo.The object whose field value will be set.

value
Object Object Object Object

Valore da assegnare al campo.The value to assign to the field.

Implementazioni

Eccezioni

In .NET per app di Windows Store o nella libreria di classi portabile rilevare invece l'eccezione della classe di base, MemberAccessException.In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, MemberAccessException, instead.

Il chiamante non ha l'autorizzazione necessaria per accedere a questo campo.The caller does not have permission to access this field.

In .NET per app di Windows Store o nella libreria di classi portabile rilevare invece l'eccezione Exception.In the .NET for Windows Store apps or the Portable Class Library, catch Exception instead.

Il parametro obj è null e il campo è un campo di istanza.The obj parameter is null and the field is an instance field.

Il campo non esiste nell'oggetto.The field does not exist on the object.

In alternativa-or- Il parametro value non può essere convertito e memorizzato nel campo.The value parameter cannot be converted and stored in the field.

Esempi

Nell'esempio seguente viene impostato il valore di un campo, viene ottenuto e visualizzato il valore, viene modificato il campo e viene visualizzato il risultato.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".

Commenti

Questo metodo verrà assegnato value al campo riflesso da questa istanza sull'oggetto. objThis method will assign value to the field reflected by this instance on object obj. Se il campo è statico, obj verrà ignorato.If the field is static, obj will be ignored. Per i campi non statici, obj deve essere un'istanza di una classe che eredita o dichiara il campo.For non-static fields, obj should be an instance of a class that inherits or declares the field. Il nuovo valore viene passato come Object.The new value is passed as an Object. Se, ad esempio, il tipo del campo è booleano, viene Object passata un'istanza di con il valore booleano appropriato.For example, if the field's type is Boolean, an instance of Object with the appropriate Boolean value is passed. Prima di impostare il valore SetValue , verifica se l'utente dispone delle autorizzazioni di accesso.Before setting the value, SetValue checks to see if the user has access permission. Questo metodo finale è un metodo pratico per chiamare il metodo SetValue seguente.This final method is a convenience method for calling the following SetValue method.

Nota

Il codice completamente attendibile dispone delle autorizzazioni necessarie per accedere e richiamare costruttori, metodi, campi e proprietà privati mediante reflection.Fully trusted code has the permissions that are needed to access and invoke private constructors, methods, fields, and properties using reflection.

Nota

A partire da .NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1, questo metodo può essere usato per accedere a membri non pubblici se il chiamante è stato concesso ReflectionPermission con il ReflectionPermissionFlag.RestrictedMemberAccess flag e se il set di concessioni dei membri non pubblici è limitato al set di concessioni del chiamante o a un subset loro.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. Vedere considerazioni sulla sicurezza per la reflection.(See Security Considerations for Reflection.)

Per usare questa funzionalità, l'applicazione deve essere destinata a .NET Framework 3.5.NET Framework 3.5 o versione successiva.To use this functionality, your application should target the .NET Framework 3.5.NET Framework 3.5 or later.

Sicurezza

ReflectionPermission
Quando viene richiamato ad associazione tardiva tramite InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[])meccanismi come.when invoked late-bound through mechanisms such as InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]). Enumerazione associata: MemberAccess.Associated enumeration: MemberAccess.

SecurityPermission
per l'aggiornamento dei campi solo init.for updating init-only fields. Enumerazione associata: SerializationFormatter.Associated enumeration: SerializationFormatter.

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

Quando se ne effettua l'override in una classe derivata, imposta il valore del campo supportato dall'oggetto dato.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

Parametri

obj
Object Object Object Object

Oggetto di cui verrà impostato il valore del campo.The object whose field value will be set.

value
Object Object Object Object

Valore da assegnare al campo.The value to assign to the field.

invokeAttr
BindingFlags BindingFlags BindingFlags BindingFlags

Campo di Binder che specifica il tipo di associazione desiderata, ad esempio 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

Insieme di proprietà che attiva l'associazione, l'assegnazione forzata dei tipi di argomento e la chiamata dei membri tramite la funzionalità di reflection.A set of properties that enables the binding, coercion of argument types, and invocation of members through reflection. Se binder è null, viene utilizzato Binder.DefaultBinding.If binder is null, then Binder.DefaultBinding is used.

culture
CultureInfo CultureInfo CultureInfo CultureInfo

Preferenze software di determinate impostazioni cultura.The software preferences of a particular culture.

Implementazioni

Eccezioni

Il chiamante non ha l'autorizzazione necessaria per accedere a questo campo.The caller does not have permission to access this field.

Il parametro obj è null e il campo è un campo di istanza.The obj parameter is null and the field is an instance field.

Il campo non esiste nell'oggetto.The field does not exist on the object.

In alternativa-or- Il parametro value non può essere convertito e memorizzato nel campo.The value parameter cannot be converted and stored in the field.

Commenti

Questo metodo verrà assegnato value al campo riflesso da questa istanza in. objThis method will assign value to the field reflected by this instance on obj. Se il campo è statico, obj verrà ignorato.If the field is static, obj will be ignored. Per i campi non statici, obj deve essere un'istanza di una classe che eredita o dichiara il campo.For non-static fields, obj should be an instance of a class that inherits or declares the field. Il nuovo valore viene passato come Object.The new value is passed as an Object. Se, ad esempio, il tipo del campo Booleanè, viene passata Object un'istanza di con il valore booleano appropriato.For example, if the field's type is Boolean, an instance of Object with the appropriate Boolean value is passed. Prima di impostare il valore SetValue , verifica se l'utente dispone delle autorizzazioni di accesso.Before setting the value, SetValue checks to see if the user has access permission.

Nota

Il codice completamente attendibile dispone delle autorizzazioni necessarie per accedere e richiamare costruttori, metodi, campi e proprietà privati mediante reflection.Fully trusted code has the permissions that are needed to access and invoke private constructors, methods, fields, and properties using reflection.

Nota

A partire da .NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1, questo metodo può essere usato per accedere a membri non pubblici se il chiamante è stato concesso ReflectionPermission con il ReflectionPermissionFlag.RestrictedMemberAccess flag e se il set di concessioni dei membri non pubblici è limitato al set di concessioni del chiamante o a un subset loro.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. Vedere considerazioni sulla sicurezza per la reflection.(See Security Considerations for Reflection.)

Per usare questa funzionalità, l'applicazione deve essere destinata a .NET Framework 3.5.NET Framework 3.5 o versione successiva.To use this functionality, your application should target the .NET Framework 3.5.NET Framework 3.5 or later.

Sicurezza

ReflectionPermission
Quando viene richiamato ad associazione tardiva tramite InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[])meccanismi come.when invoked late-bound through mechanisms such as InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]). Enumerazione associata: MemberAccess.Associated enumeration: MemberAccess.

SecurityPermission
per l'aggiornamento dei campi solo init.for updating init-only fields. Enumerazione associata: SerializationFormatter.Associated enumeration: SerializationFormatter.

Si applica a