FieldInfo.SetValue Methode
Definitie
Belangrijk
Bepaalde informatie heeft betrekking op een voorlopige productversie die aanzienlijk kan worden gewijzigd voordat deze wordt uitgebracht. Microsoft biedt geen enkele expliciete of impliciete garanties met betrekking tot de informatie die hier wordt verstrekt.
Hiermee stelt u de waarde van het veld voor het opgegeven object in op de opgegeven waarde.
Overloads
| Name | Description |
|---|---|
| SetValue(Object, Object) |
Hiermee stelt u de waarde van het veld in dat wordt ondersteund door het opgegeven object. |
| SetValue(Object, Object, BindingFlags, Binder, CultureInfo) |
Wanneer deze wordt overschreven in een afgeleide klasse, stelt u de waarde in van het veld dat wordt ondersteund door het opgegeven object. |
SetValue(Object, Object)
Hiermee stelt u de waarde van het veld in dat wordt ondersteund door het opgegeven object.
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);
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)
Parameters
- obj
- Object
Het object waarvan de veldwaarde wordt ingesteld.
- value
- Object
De waarde die moet worden toegewezen aan het veld.
Implementeringen
Uitzonderingen
De beller is niet gemachtigd om toegang te krijgen tot dit veld.
Opmerking: In .NET voor Windows Store-apps of de Portable Class Library, haalt u in plaats daarvan de uitzondering van de basisklasse op, MemberAccessException.
De obj parameter is null en het veld is een exemplaarveld.
Opmerking: In .NET voor Windows Store-apps of de Portable Class Library kunt u in plaats daarvan Exception vangen.
Het veld bestaat niet in het object.
– of –
De value parameter kan niet worden geconverteerd en opgeslagen in het veld.
Voorbeelden
In het volgende voorbeeld wordt de waarde van een veld ingesteld, wordt de waarde opgehaald en weergegeven, wordt het veld gewijzigd en wordt het resultaat weergegeven.
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".
Opmerkingen
Deze methode wordt toegewezen aan value het veld dat door dit exemplaar op het object objwordt weerspiegeld. Als het veld statisch is, obj wordt dit genegeerd. Voor niet-statische velden obj moet het een exemplaar zijn van een klasse die het veld over neemt of declareert. De nieuwe waarde wordt doorgegeven als een Object. Als het veldtype bijvoorbeeld Booleaanse waarde is, wordt een exemplaar van Object de juiste Booleaanse waarde doorgegeven. Voordat u de waarde instelt, SetValue controleert u of de gebruiker toegangsmachtigingen heeft. Deze laatste methode is een handige methode voor het aanroepen van de volgende SetValue methode.
Deze methode kan niet worden gebruikt om waarden van statische, init-only (readonly in C#)-velden betrouwbaar in te stellen. In .NET versies wordt een uitzondering gegenereerd als u probeert een waarde in te stellen voor een statisch, alleen init-veld.
Note
Volledig vertrouwde code heeft de machtigingen die nodig zijn om persoonlijke constructors, methoden, velden en eigenschappen te openen en aan te roepen met behulp van weerspiegeling.
Note
Deze methode kan worden gebruikt voor toegang tot niet-openbare leden als de beller is verleend ReflectionPermission met de ReflectionPermissionFlag.RestrictedMemberAccess vlag en als de toekenningsset van de niet-openbare leden is beperkt tot de toekenningsset van de beller of een subset daarvan. (Zie Beveiligingsoverwegingen voor reflectie.)
Als u deze functionaliteit wilt gebruiken, moet uw toepassing zich richten op .NET Framework 3.5 of hoger.
Van toepassing op
SetValue(Object, Object, BindingFlags, Binder, CultureInfo)
Wanneer deze wordt overschreven in een afgeleide klasse, stelt u de waarde in van het veld dat wordt ondersteund door het opgegeven 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
Public MustOverride Sub SetValue (obj As Object, value As Object, invokeAttr As BindingFlags, binder As Binder, culture As CultureInfo)
Parameters
- obj
- Object
Het object waarvan de veldwaarde wordt ingesteld.
- value
- Object
De waarde die moet worden toegewezen aan het veld.
- invokeAttr
- BindingFlags
Een veld van Binder die specificeert het type binding dat gewenst is (bijvoorbeeld Binder.CreateInstance ).Binder.ExactBinding
- binder
- Binder
Een set eigenschappen die de binding, dwang van argumenttypen en aanroep van leden via reflectie mogelijk maakt. Als binder dat het is null, wordt gebruikt Binder.DefaultBinding .
- culture
- CultureInfo
De softwarevoorkeuren van een bepaalde cultuur.
Implementeringen
Uitzonderingen
De beller is niet gemachtigd om toegang te krijgen tot dit veld.
De obj parameter is null en het veld is een exemplaarveld.
Het veld bestaat niet in het object.
– of –
De value parameter kan niet worden geconverteerd en opgeslagen in het veld.
Opmerkingen
Deze methode wordt toegewezen aan value het veld dat door dit exemplaar wordt weerspiegeld op obj. Als het veld statisch is, obj wordt dit genegeerd. Voor niet-statische velden obj moet het een exemplaar zijn van een klasse die het veld over neemt of declareert. De nieuwe waarde wordt doorgegeven als een Object. Als het veldtype bijvoorbeeld is Boolean, wordt er een exemplaar van Object met de juiste Booleaanse waarde doorgegeven. Voordat u de waarde instelt, SetValue controleert u of de gebruiker toegangsmachtigingen heeft.
Deze methode kan niet worden gebruikt om waarden van statische, init-only (readonly in C#)-velden betrouwbaar in te stellen. In .NET wordt een uitzondering gegenereerd als u probeert een waarde in te stellen voor een statisch, alleen-init-veld.
Note
Volledig vertrouwde code heeft de machtigingen die nodig zijn om persoonlijke constructors, methoden, velden en eigenschappen te openen en aan te roepen met behulp van weerspiegeling.
Note
Deze methode kan worden gebruikt voor toegang tot niet-openbare leden als de beller is verleend ReflectionPermission met de ReflectionPermissionFlag.RestrictedMemberAccess vlag en als de toekenningsset van de niet-openbare leden is beperkt tot de toekenningsset van de beller of een subset daarvan. (Zie Beveiligingsoverwegingen voor reflectie.)