FieldInfo.SetValue Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
Legt den Wert des Felds für das angegebene Objekt auf den angegebenen Wert fest.
Überlädt
SetValue(Object, Object) |
Legt den Wert des Felds fest, das durch das angegebene Objekt unterstützt wird. |
SetValue(Object, Object, BindingFlags, Binder, CultureInfo) |
Legt den Wert eines Felds fest, das durch ein angegebenes Objekt unterstützt wird, wenn es in einer abgeleiteten Klasse überschrieben wird. |
SetValue(Object, Object)
Legt den Wert des Felds fest, das durch das angegebene Objekt unterstützt wird.
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)
Parameter
- obj
- Object
Das Objekt, dessen Feldwert festgelegt wird.
- value
- Object
Der Wert, der dem Feld zugewiesen werden soll.
Implementiert
Ausnahmen
Der Aufrufer hat nicht die Berechtigung für den Zugriff auf dieses Feld.
Hinweis: Fangen Sie in .NET Windows Store-Apps oder der portablenKlassenbibliothek stattdessen die Basisklassenausnahme MemberAccessException ab.
Der obj
-Parameter ist null
, und das Feld ist ein Instanzfeld.
Hinweis: Fangen Sie in .NET für Windows Store-Apps oder der portablen Klassenbibliothek Exception stattdessen ab.
Das Feld ist im Objekt nicht vorhanden.
- oder -
Der value
-Parameter kann nicht konvertiert und im Feld gespeichert werden.
Beispiele
Das folgende Beispiel legt den Wert eines Felds fest, ruft den Wert ab und zeigt den Wert an, ändert das Feld und zeigt das Ergebnis an.
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".
Hinweise
Diese Methode weist dem value
Feld zu, das von dieser Instanz für das Objekt reflektiert obj
wird. Wenn das Feld statisch ist, obj
wird ignoriert. Bei nicht statischen Feldern sollte eine Instanz einer Klasse sein, die das Feld erbt obj
oder deklariert. Der neue Wert wird als Object
übergeben. Wenn der Typ des Felds beispielsweise boolesch ist, wird eine Instanz von mit dem entsprechenden Object
booleschen Wert übergeben. Überprüft vor dem Festlegen des SetValue
Werts, ob der Benutzer über Zugriffsberechtigungen verfügt. Diese letzte Methode ist eine bequeme Methode zum Aufrufen der folgenden SetValue
Methode.
Diese Methode kann nicht verwendet werden, um Werte statischer, init-only -Felder ( readonly
in C#) zuverlässig fest zu legen. In .NET Core 3.0 und höher wird eine Ausnahme ausgelöst, wenn Sie versuchen, einen Wert für ein statisches, init-only-Feld zu setzen.
Hinweis
Vollständig vertrauenswürdiger Code verfügt über die Berechtigungen, die für den Zugriff auf private Konstruktoren, Methoden, Felder und Eigenschaften mithilfe von Reflektion erforderlich sind.
Hinweis
Ab .NET Framework 2.0 Service Pack 1 kann diese Methode für den Zugriff auf nicht öffentliche Member verwendet werden, wenn dem Aufrufer das -Flag erteilt wurde und der Berechtigungssatz der nicht öffentlichen Member auf den Berechtigungssatz des Aufrufers oder eine Teilmenge davon beschränkt ReflectionPermission ReflectionPermissionFlag.RestrictedMemberAccess ist. (Weitere Informationen finden Sie unter Überlegungen zur Sicherheit bei der Reflektion.)
Um diese Funktionalität zu verwenden, sollte Ihre Anwendung auf .NET Framework 3.5 oder höher.
Gilt für
SetValue(Object, Object, BindingFlags, Binder, CultureInfo)
Legt den Wert eines Felds fest, das durch ein angegebenes Objekt unterstützt wird, wenn es in einer abgeleiteten Klasse überschrieben wird.
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)
Parameter
- obj
- Object
Das Objekt, dessen Feldwert festgelegt wird.
- value
- Object
Der Wert, der dem Feld zugewiesen werden soll.
- invokeAttr
- BindingFlags
Ein Feld von Binder
, das die Art der gewünschten Bindung angibt, z. B. Binder.CreateInstance
oder Binder.ExactBinding
.
- binder
- Binder
Eine Gruppe von Eigenschaften, die die Bindung, Umwandlung der Argumenttypen und das Aufrufen von Membern über Reflektion ermöglicht. Wenn binder
den Wert null
hat, wird Binder.DefaultBinding
verwendet.
- culture
- CultureInfo
Die Softwareeinstellungen für eine bestimmte Kultur.
Implementiert
Ausnahmen
Der Aufrufer hat nicht die Berechtigung für den Zugriff auf dieses Feld.
Der obj
-Parameter ist null
, und das Feld ist ein Instanzfeld.
Das Feld ist im Objekt nicht vorhanden.
- oder -
Der value
-Parameter kann nicht konvertiert und im Feld gespeichert werden.
Hinweise
Diese Methode weist dem value
Feld zu, das von dieser Instanz in reflektiert obj
wird. Wenn das Feld statisch ist, obj
wird ignoriert. Bei nicht statischen Feldern sollte eine Instanz einer Klasse sein, die das Feld erbt obj
oder deklariert. Der neue Wert wird als Object
übergeben. Wenn der Typ des Felds beispielsweise ist, wird eine Instanz von mit Boolean
Object
dem entsprechenden booleschen Wert übergeben. Überprüft vor dem Festlegen des SetValue
Werts, ob der Benutzer über Zugriffsberechtigungen verfügt.
Diese Methode kann nicht verwendet werden, um Werte statischer, init-only -Felder ( readonly
in C#) zuverlässig fest zu legen. In .NET Core 3.0 und höher wird eine Ausnahme ausgelöst, wenn Sie versuchen, einen Wert für ein statisches, init-only-Feld zu setzen.
Hinweis
Vollständig vertrauenswürdiger Code verfügt über die Berechtigungen, die für den Zugriff auf private Konstruktoren, Methoden, Felder und Eigenschaften mithilfe von Reflektion erforderlich sind.
Hinweis
Ab .NET Framework 2.0 Service Pack 1 kann diese Methode für den Zugriff auf nicht öffentliche Member verwendet werden, wenn dem Aufrufer das -Flag erteilt wurde und der Berechtigungssatz der nicht öffentlichen Member auf den Berechtigungssatz des Aufrufers oder eine Teilmenge davon beschränkt ReflectionPermission ReflectionPermissionFlag.RestrictedMemberAccess ist. (Weitere Informationen finden Sie unter Überlegungen zur Sicherheit bei der Reflektion.)
Um diese Funktionalität zu verwenden, sollte Ihre Anwendung auf .NET Framework 3.5 oder höher.