FieldInfo.SetValue Method
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
Sets the value of the field for the given object to the given value.
Overloads
SetValue(Object, Object) |
Sets the value of the field supported by the given object. |
SetValue(Object, Object, BindingFlags, Binder, CultureInfo) |
When overridden in a derived class, sets the value of the field supported by the given object. |
SetValue(Object, Object)
- Source:
- FieldInfo.cs
- Source:
- FieldInfo.cs
- Source:
- FieldInfo.cs
Sets the value of the field supported by the given 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);
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
The object whose field value will be set.
- value
- Object
The value to assign to the field.
Implements
Exceptions
The caller does not have permission to access this field.
Note: In .NET for Windows Store apps or the Portable Class Library, catch the base class exception, MemberAccessException, instead.
The obj
parameter is null
and the field is an instance field.
Note: In .NET for Windows Store apps or the Portable Class Library, catch Exception instead.
The field does not exist on the object.
-or-
The value
parameter cannot be converted and stored in the field.
Examples
The following example sets the value of a field, gets and displays the value, modifies the field, and displays the result.
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".
Remarks
This method will assign value
to the field reflected by this instance on object obj
. If the field is static, obj
will be ignored. For non-static fields, obj
should be an instance of a class that inherits or declares the field. The new value is passed as an Object
. For example, if the field's type is Boolean, an instance of Object
with the appropriate Boolean value is passed. Before setting the value, SetValue
checks to see if the user has access permission. This final method is a convenience method for calling the following SetValue
method.
This method cannot be used to set values of static, init-only (readonly
in C#) fields reliably. In .NET Core 3.0 and later versions, an exception is thrown if you attempt to set a value on a static, init-only field.
Note
Fully trusted code has the permissions that are needed to access and invoke private constructors, methods, fields, and properties using reflection.
Note
Starting with the .NET Framework 2.0 Service Pack 1, this method can be used to access non-public members if the caller has been granted ReflectionPermission with the ReflectionPermissionFlag.RestrictedMemberAccess flag and if the grant set of the non-public members is restricted to the caller's grant set, or a subset thereof. (See Security Considerations for Reflection.)
To use this functionality, your application should target the .NET Framework 3.5 or later.
Applies to
SetValue(Object, Object, BindingFlags, Binder, CultureInfo)
- Source:
- FieldInfo.cs
- Source:
- FieldInfo.cs
- Source:
- FieldInfo.cs
When overridden in a derived class, sets the value of the field supported by the given 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);
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
The object whose field value will be set.
- value
- Object
The value to assign to the field.
- invokeAttr
- BindingFlags
A field of Binder
that specifies the type of binding that is desired (for example, Binder.CreateInstance
or Binder.ExactBinding
).
- binder
- Binder
A set of properties that enables the binding, coercion of argument types, and invocation of members through reflection. If binder
is null
, then Binder.DefaultBinding
is used.
- culture
- CultureInfo
The software preferences of a particular culture.
Implements
Exceptions
The caller does not have permission to access this field.
The obj
parameter is null
and the field is an instance field.
The field does not exist on the object.
-or-
The value
parameter cannot be converted and stored in the field.
Remarks
This method will assign value
to the field reflected by this instance on obj
. If the field is static, obj
will be ignored. For non-static fields, obj
should be an instance of a class that inherits or declares the field. The new value is passed as an Object
. For example, if the field's type is Boolean
, an instance of Object
with the appropriate Boolean value is passed. Before setting the value, SetValue
checks to see if the user has access permission.
This method cannot be used to set values of static, init-only (readonly
in C#) fields reliably. In .NET Core 3.0 and later versions, an exception is thrown if you attempt to set a value on a static, init-only field.
Note
Fully trusted code has the permissions that are needed to access and invoke private constructors, methods, fields, and properties using reflection.
Note
Starting with the .NET Framework 2.0 Service Pack 1, this method can be used to access non-public members if the caller has been granted ReflectionPermission with the ReflectionPermissionFlag.RestrictedMemberAccess flag and if the grant set of the non-public members is restricted to the caller's grant set, or a subset thereof. (See Security Considerations for Reflection.)
To use this functionality, your application should target the .NET Framework 3.5 or later.