Condividi tramite


FieldInfo.SetValue Metodo

Definizione

Imposta il valore del campo per l'oggetto specificato sul valore specificato.

Overload

Nome Descrizione
SetValue(Object, Object)

Imposta il valore del campo supportato dall'oggetto specificato.

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

Quando sottoposto a override in una classe derivata, imposta il valore del campo supportato dall'oggetto specificato.

SetValue(Object, Object)

Origine:
FieldInfo.cs
Origine:
FieldInfo.cs
Origine:
FieldInfo.cs
Origine:
FieldInfo.cs
Origine:
FieldInfo.cs

Imposta il valore del campo supportato dall'oggetto specificato.

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);
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)

Parametri

obj
Object

Oggetto il cui valore del campo verrà impostato.

value
Object

Valore da assegnare al campo.

Implementazioni

Eccezioni

Il chiamante non dispone dell'autorizzazione per accedere a questo campo.

Nota: in .NET per le app di Windows Store o nella libreria di classi portabile intercettare invece l'eccezione della classe di base, MemberAccessException, .

Il obj parametro è null e il campo è un campo di istanza.

Nota: in .NET per le app di Windows Store o nella libreria di classi portabile intercettare Exception .

Il campo non esiste nell'oggetto .

oppure

Il value parametro non può essere convertito e archiviato nel campo .

Esempio

L'esempio seguente imposta il valore di un campo, ottiene e visualizza il valore, modifica il campo e visualizza il risultato.

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".

Commenti

Questo metodo verrà assegnato value al campo riflesso da questa istanza sull'oggetto obj. Se il campo è statico, obj verrà ignorato. Per i campi non statici, obj deve essere un'istanza di una classe che eredita o dichiara il campo. Il nuovo valore viene passato come Object. Ad esempio, se il tipo del campo è booleano, viene passata un'istanza di Object con il valore booleano appropriato. Prima di impostare il valore, SetValue verifica se l'utente dispone dell'autorizzazione di accesso. Questo metodo finale è un metodo pratico per chiamare il metodo seguente SetValue .

Questo metodo non può essere usato per impostare in modo affidabile i valori dei campi statici init-only (readonly in C#). Nelle versioni di .NET viene generata un'eccezione se si tenta di impostare un valore su un campo statico e solo init.

Annotazioni

Il codice completamente attendibile dispone delle autorizzazioni necessarie per accedere e richiamare costruttori, metodi, campi e proprietà privati tramite reflection.

Annotazioni

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. Vedere Considerazioni sulla sicurezza per reflection.

Per usare questa funzionalità, l'applicazione deve avere come destinazione .NET Framework 3.5 o versione successiva.

Si applica a

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

Origine:
FieldInfo.cs
Origine:
FieldInfo.cs
Origine:
FieldInfo.cs
Origine:
FieldInfo.cs
Origine:
FieldInfo.cs

Quando sottoposto a override in una classe derivata, imposta il valore del campo supportato dall'oggetto specificato.

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);
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)

Parametri

obj
Object

Oggetto il cui valore del campo verrà impostato.

value
Object

Valore da assegnare al campo.

invokeAttr
BindingFlags

Campo di Binder che specifica il tipo di associazione desiderato, Binder.CreateInstance ad esempio o Binder.ExactBinding.

binder
Binder

Set di proprietà che consente l'associazione, la coercizione dei tipi di argomento e la chiamata dei membri tramite reflection. Se binder è null, Binder.DefaultBinding viene usato .

culture
CultureInfo

Le preferenze software di una determinata cultura.

Implementazioni

Eccezioni

Il chiamante non dispone dell'autorizzazione per accedere a questo campo.

Il obj parametro è null e il campo è un campo di istanza.

Il campo non esiste nell'oggetto .

oppure

Il value parametro non può essere convertito e archiviato nel campo .

Commenti

Questo metodo verrà assegnato value al campo riflesso da questa istanza in obj. Se il campo è statico, obj verrà ignorato. Per i campi non statici, obj deve essere un'istanza di una classe che eredita o dichiara il campo. Il nuovo valore viene passato come Object. Ad esempio, se il tipo del campo è Boolean, viene passata un'istanza di Object con il valore booleano appropriato. Prima di impostare il valore, SetValue verifica se l'utente dispone dell'autorizzazione di accesso.

Questo metodo non può essere usato per impostare in modo affidabile i valori dei campi statici init-only (readonly in C#). In .NET viene generata un'eccezione se si tenta di impostare un valore in un campo statico e solo init.

Annotazioni

Il codice completamente attendibile dispone delle autorizzazioni necessarie per accedere e richiamare costruttori, metodi, campi e proprietà privati tramite reflection.

Annotazioni

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. Vedere Considerazioni sulla sicurezza per reflection.

Si applica a