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
| Name | Beschreibung |
|---|---|
| SetValue(Object, Object) |
Legt den Wert des felds fest, das vom angegebenen Objekt unterstützt wird. |
| SetValue(Object, Object, BindingFlags, Binder, CultureInfo) |
Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird der Wert des felds festgelegt, das vom angegebenen Objekt unterstützt wird. |
SetValue(Object, Object)
- Quelle:
- FieldInfo.cs
- Quelle:
- FieldInfo.cs
- Quelle:
- FieldInfo.cs
- Quelle:
- FieldInfo.cs
- Quelle:
- FieldInfo.cs
Legt den Wert des felds fest, das vom angegebenen 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 verfügt nicht über die Berechtigung für den Zugriff auf dieses Feld.
Hinweis: In .NET für Windows Store-Apps oder der portablen Klassenbibliothek erfassen Sie stattdessen die Basisklassen-Ausnahme. MemberAccessException
Der obj Parameter ist null und das Feld ein Instanzfeld.
Hinweis: In .NET für Windows Store-Apps oder der portablen Klassenbibliothek können Sie stattdessen abfangen Exception .
Das Feld ist für das Objekt nicht vorhanden.
- oder -
Der value Parameter kann nicht konvertiert und im Feld gespeichert werden.
Beispiele
Im folgenden Beispiel wird der Wert eines Felds festgelegt, der Wert abgerufen und angezeigt, das Feld geändert und das Ergebnis angezeigt.
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 wird dem Feld zugewiesen value , das von dieser Instanz des Objekts objwidersprochen wird. Wenn das Feld statisch ist, obj wird es ignoriert. Bei nicht statischen Feldern sollte es sich um eine Instanz einer Klasse handeln, obj die das Feld erbt oder deklariert. Der neue Wert wird als ein Object. Wenn der Feldtyp beispielsweise boolescher Wert ist, wird eine Instanz mit Object dem entsprechenden booleschen Wert übergeben. Überprüfen Sie vor dem Festlegen des Werts, SetValue 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 (readonly in C#)-Feldern zuverlässig festzulegen. In .NET-Versionen wird eine Ausnahme ausgelöst, wenn Sie versuchen, einen Wert für ein statisches, init-only-Feld festzulegen.
Hinweis
Voll vertrauenswürdiger Code verfügt über die Berechtigungen, die zum Zugreifen auf und Aufrufen privater Konstruktoren, Methoden, Felder und Eigenschaften mithilfe der Spiegelung erforderlich sind.
Hinweis
Diese Methode kann verwendet werden, um auf nicht öffentliche Member zuzugreifen, wenn der Aufrufer mit der ReflectionPermissionFlag.RestrictedMemberAccess Kennzeichnung erteilt ReflectionPermission wurde und wenn der Grant-Satz der nicht öffentlichen Mitglieder auf den Grant-Satz des Aufrufers oder eine Teilmenge davon beschränkt ist. (Siehe Sicherheitsüberlegungen zur Reflexion.)
Um diese Funktionalität zu verwenden, sollte Ihre Anwendung auf .NET Framework 3.5 oder höher abzielen.
Gilt für:
SetValue(Object, Object, BindingFlags, Binder, CultureInfo)
- Quelle:
- FieldInfo.cs
- Quelle:
- FieldInfo.cs
- Quelle:
- FieldInfo.cs
- Quelle:
- FieldInfo.cs
- Quelle:
- FieldInfo.cs
Wenn sie in einer abgeleiteten Klasse überschrieben wird, wird der Wert des felds festgelegt, das vom angegebenen Objekt unterstützt 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, das Binder den gewünschten Bindungstyp angibt (z Binder.CreateInstance . B. oder Binder.ExactBinding).
- binder
- Binder
Eine Reihe von Eigenschaften, die die Bindung, die Koersion von Argumenttypen und den Aufruf von Elementen durch Spiegelung ermöglichen. Ist binder dies nullder Wert , wird Binder.DefaultBinding verwendet.
- culture
- CultureInfo
Die Softwareeinstellungen einer bestimmten Kultur.
Implementiert
Ausnahmen
Der Aufrufer verfügt nicht über die Berechtigung für den Zugriff auf dieses Feld.
Der obj Parameter ist null und das Feld ein Instanzfeld.
Das Feld ist für das Objekt nicht vorhanden.
- oder -
Der value Parameter kann nicht konvertiert und im Feld gespeichert werden.
Hinweise
Diese Methode wird dem Feld zugewiesen value , das von dieser Instanz objauf . Wenn das Feld statisch ist, obj wird es ignoriert. Bei nicht statischen Feldern sollte es sich um eine Instanz einer Klasse handeln, obj die das Feld erbt oder deklariert. Der neue Wert wird als ein Object. Wenn der Feldtyp beispielsweise lautet Boolean, wird eine Instanz mit Object dem entsprechenden booleschen Wert übergeben. Überprüfen Sie vor dem Festlegen des Werts, SetValue ob der Benutzer über Zugriffsberechtigungen verfügt.
Diese Methode kann nicht verwendet werden, um Werte statischer, init-only (readonly in C#)-Feldern zuverlässig festzulegen. In .NET wird eine Ausnahme ausgelöst, wenn Sie versuchen, einen Wert für ein statisches, init-only-Feld festzulegen.
Hinweis
Voll vertrauenswürdiger Code verfügt über die Berechtigungen, die zum Zugreifen auf und Aufrufen privater Konstruktoren, Methoden, Felder und Eigenschaften mithilfe der Spiegelung erforderlich sind.
Hinweis
Diese Methode kann verwendet werden, um auf nicht öffentliche Member zuzugreifen, wenn der Aufrufer mit der ReflectionPermissionFlag.RestrictedMemberAccess Kennzeichnung erteilt ReflectionPermission wurde und wenn der Grant-Satz der nicht öffentlichen Mitglieder auf den Grant-Satz des Aufrufers oder eine Teilmenge davon beschränkt ist. (Siehe Sicherheitsüberlegungen zur Reflexion.)