FieldInfo.SetValue Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Imposta il valore del campo per il dato oggetto sul valore specificato.
Overload
SetValue(Object, Object) |
Imposta il valore del campo supportato dall'oggetto specificato. |
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. |
SetValue(Object, Object)
- 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 di cui verrà impostato il valore del campo.
- value
- Object
Valore da assegnare al campo.
Implementazioni
Eccezioni
Il chiamante non ha l'autorizzazione necessaria per accedere a questo campo.
Nota: in .NET per le app di Windows Store o la libreria di classi portabili, rilevare invece l'eccezione della classe di base, , MemberAccessException.
Il parametro obj
è null
e il campo è un campo di istanza.
Nota: in .NET per le app di Windows Store o la libreria di classi portabile, rilevareException invece.
Il campo non esiste nell'oggetto.
-oppure-
Il parametro value
non può essere convertito e memorizzato nel campo.
Esempio
Nell'esempio seguente viene impostato il valore di un campo, ottiene e visualizza il valore, modifica il campo e visualizza il risultato.
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".
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 i valori dei campi statici, init-only (readonly
in C#) in modo affidabile. In .NET Core 3.0 e versioni successive viene generata un'eccezione se si tenta di impostare un valore su un campo statico e solo init.
Nota
Il codice completamente attendibile dispone delle autorizzazioni necessarie per accedere e richiamare costruttori, metodi, campi e proprietà privati usando la reflection.
Nota
A partire da .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 concessione dei membri non pubblici è limitato al set di concessione del chiamante o a un subset. Vedere Considerazioni sulla sicurezza per Reflection.
Per usare questa funzionalità, l'applicazione deve essere destinato a .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
Quando se ne effettua l'override in una classe derivata, imposta il valore del campo supportato dall'oggetto dato.
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 di cui verrà impostato il valore del campo.
- value
- Object
Valore da assegnare al campo.
- invokeAttr
- BindingFlags
Campo di Binder
che specifica il tipo di associazione desiderata, ad esempio Binder.CreateInstance
o Binder.ExactBinding
.
- 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. Se binder
è null
, viene utilizzato Binder.DefaultBinding
.
- culture
- CultureInfo
Preferenze software di determinate impostazioni cultura.
Implementazioni
Eccezioni
Il chiamante non ha l'autorizzazione necessaria per accedere a questo campo.
Il parametro obj
è null
e il campo è un campo di istanza.
Il campo non esiste nell'oggetto.
-oppure-
Il parametro value
non può essere convertito e memorizzato 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 i valori dei campi statici, init-only (readonly
in C#) in modo affidabile. In .NET Core 3.0 e versioni successive viene generata un'eccezione se si tenta di impostare un valore su un campo statico e solo init.
Nota
Il codice completamente attendibile dispone delle autorizzazioni necessarie per accedere e richiamare costruttori, metodi, campi e proprietà privati usando la reflection.
Nota
A partire da .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 concessione dei membri non pubblici è limitato al set di concessione del chiamante o a un subset. Vedere Considerazioni sulla sicurezza per Reflection.
Per usare questa funzionalità, l'applicazione deve essere destinato a .NET Framework 3.5 o versione successiva.