FieldInfo::SetValue Method (Object^, Object^)
Sets the value of the field supported by the given object.
Assembly: mscorlib (in mscorlib.dll)
Parameters
- obj
-
Type:
System::Object^
The object whose field value will be set.
- value
-
Type:
System::Object^
The value to assign to the field.
Implements
_FieldInfo::SetValue(Object^, Object^)| Exception | Condition | ||
|---|---|---|---|
| FieldAccessException |
The caller does not have permission to access this field. | ||
| TargetException |
The obj parameter is null and the field is an instance field. | ||
| ArgumentException | The field does not exist on the object. -or- The value parameter cannot be converted and stored in the field. |
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.
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. |
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". */
for accessing non-public fields when the grant set of the non-public members is restricted to the caller's grant set, or a subset thereof. Associated enumeration: ReflectionPermissionFlag::RestrictedMemberAccess
for accessing non-public fields regardless of their grant set. Associated enumeration: ReflectionPermissionFlag::MemberAccess
when invoked late-bound through mechanisms such as Type::InvokeMember. Associated enumeration: ReflectionPermissionFlag::MemberAccess.
for updating init-only fields. Associated enumeration: SecurityPermissionFlag::SerializationFormatter.
Available since 8
.NET Framework
Available since 1.1
Portable Class Library
Supported in: portable .NET platforms
Silverlight
Available since 2.0
Windows Phone Silverlight
Available since 7.0
Windows Phone
Available since 8.1
