FieldInfo.SetValue Metod
Definition
Viktigt
En del information gäller för förhandsversionen av en produkt och kan komma att ändras avsevärt innan produkten blir allmänt tillgänglig. Microsoft lämnar inga garantier, uttryckliga eller underförstådda, avseende informationen som visas här.
Anger värdet för fältet för det angivna objektet till det angivna värdet.
Överlagringar
| Name | Description |
|---|---|
| SetValue(Object, Object) |
Anger värdet för det fält som stöds av det angivna objektet. |
| SetValue(Object, Object, BindingFlags, Binder, CultureInfo) |
När det åsidosättas i en härledd klass anger du värdet för det fält som stöds av det angivna objektet. |
SetValue(Object, Object)
Anger värdet för det fält som stöds av det angivna objektet.
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)
Parametrar
- obj
- Object
Objektet vars fältvärde ska anges.
- value
- Object
Värdet som ska tilldelas till fältet.
Implementeringar
Undantag
Anroparen har inte behörighet att komma åt det här fältet.
Obs! I .NET för Windows Store-appar eller Portable Class Library fångar du i stället basklassfelet MemberAccessException.
Parametern obj är null och fältet är ett instansfält.
Obs! I .NET för Windows Store-appar eller Portable Class Library fångar du Exception i stället.
Fältet finns inte på objektet.
-eller-
Parametern value kan inte konverteras och lagras i fältet.
Exempel
I följande exempel anges värdet för ett fält, hämtar och visar värdet, ändrar fältet och visar resultatet.
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".
Kommentarer
Den här metoden tilldelar value fältet som återspeglas av den här instansen på objektet obj. Om fältet är statiskt obj ignoreras det. För icke-statiska fält obj ska vara en instans av en klass som ärver eller deklarerar fältet. Det nya värdet skickas som en Object. Om fältets typ till exempel är boolesk skickas en instans av Object med lämpligt booleskt värde. Innan du anger värdet SetValue kontrollerar du om användaren har åtkomstbehörighet. Den här sista metoden är en bekvämlighetsmetod för att anropa följande SetValue metod.
Den här metoden kan inte användas för att ange värden för statiska, init-only (readonly i C#) fält på ett tillförlitligt sätt. I .NET versioner utlöses ett undantag om du försöker ange ett värde i ett statiskt, endast init-fält.
Note
Fullständigt betrodd kod har de behörigheter som krävs för att komma åt och anropa privata konstruktorer, metoder, fält och egenskaper med reflektion.
Note
Den här metoden kan användas för åtkomst till icke-offentliga medlemmar om anroparen har beviljats ReflectionPermission med ReflectionPermissionFlag.RestrictedMemberAccess flaggan och om bidragsuppsättningen för icke-offentliga medlemmar är begränsad till anroparens bidragsuppsättning eller en delmängd av den. (Se Säkerhetsöverväganden för reflektion.)
Om du vill använda den här funktionen bör ditt program rikta in sig på .NET Framework 3.5 eller senare.
Gäller för
SetValue(Object, Object, BindingFlags, Binder, CultureInfo)
När det åsidosättas i en härledd klass anger du värdet för det fält som stöds av det angivna objektet.
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)
Parametrar
- obj
- Object
Objektet vars fältvärde ska anges.
- value
- Object
Värdet som ska tilldelas till fältet.
- invokeAttr
- BindingFlags
Ett fält som Binder anger vilken typ av bindning som önskas (till exempel Binder.CreateInstance eller Binder.ExactBinding).
- binder
- Binder
En uppsättning egenskaper som möjliggör bindning, tvång av argumenttyper och anrop av medlemmar genom reflektion. Om binder är nullanvänds .Binder.DefaultBinding
- culture
- CultureInfo
Programvaruinställningarna för en viss kultur.
Implementeringar
Undantag
Anroparen har inte behörighet att komma åt det här fältet.
Parametern obj är null och fältet är ett instansfält.
Fältet finns inte på objektet.
-eller-
Parametern value kan inte konverteras och lagras i fältet.
Kommentarer
Den här metoden tilldelar value fältet som återspeglas av den här instansen på obj. Om fältet är statiskt obj ignoreras det. För icke-statiska fält obj ska vara en instans av en klass som ärver eller deklarerar fältet. Det nya värdet skickas som en Object. Om fältets typ till exempel är Booleanskickas en instans av Object med lämpligt booleskt värde. Innan du anger värdet SetValue kontrollerar du om användaren har åtkomstbehörighet.
Den här metoden kan inte användas för att ange värden för statiska, init-only (readonly i C#) fält på ett tillförlitligt sätt. I .NET utlöses ett undantag om du försöker ange ett värde för ett statiskt, endast init-fält.
Note
Fullständigt betrodd kod har de behörigheter som krävs för att komma åt och anropa privata konstruktorer, metoder, fält och egenskaper med reflektion.
Note
Den här metoden kan användas för åtkomst till icke-offentliga medlemmar om anroparen har beviljats ReflectionPermission med ReflectionPermissionFlag.RestrictedMemberAccess flaggan och om bidragsuppsättningen för icke-offentliga medlemmar är begränsad till anroparens bidragsuppsättning eller en delmängd av den. (Se Säkerhetsöverväganden för reflektion.)