FieldInfo::GetValue Method
When overridden in a derived class, returns the value of a field supported by a given object.
Assembly: mscorlib (in mscorlib.dll)
Parameters
- obj
- Type: System::Object
The object whose field value will be returned.
Return Value
Type: System::ObjectAn object containing the value of the field reflected by this instance.
Implements
_FieldInfo::GetValue(Object)| Exception | Condition |
|---|---|
| TargetException | The field is non-static and obj is nullptr. |
| NotSupportedException | A field is marked literal, but the field does not have one of the accepted literal types. |
| FieldAccessException | The caller does not have permission to access this field. |
| ArgumentException | The method is neither declared nor inherited by the class of obj. |
If the field is static, obj is ignored. For non-static fields, obj should be an instance of a class that inherits or declares the field. Note that the return type of GetValue is Object. For example, if the field holds a Boolean primitive value, an instance of Object with the appropriate Boolean value is returned. Before returning the value, GetValue checks to see if the user has access permission.
Note |
|---|
Access restrictions are ignored for fully trusted code. That is, private constructors, methods, fields, and properties can be accessed and invoked through reflection whenever the code is fully trusted. |
Note |
|---|
Starting with the .NET Framework version 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 version 3.5 or later. |
// The following example demonstrates getting // a field value directly, without having an object, // by defining it as a static field. using namespace System; using namespace System::Reflection; ref class MyClass { public: static String^ val = "test"; }; int main() { FieldInfo^ myf = MyClass::typeid->GetField( "val" ); Console::WriteLine( myf->GetValue( nullptr ) ); MyClass::val = "hi"; Console::WriteLine( myf->GetValue( nullptr ) ); }
The following example retrieves the fields of MyClass and displays the field values.
using namespace System; using namespace System::Reflection; public ref class MyClass { public: String^ myFieldA; String^ myFieldB; MyClass() { myFieldA = "A public field"; myFieldB = "Another public field"; } }; int main() { MyClass^ myInstance = gcnew MyClass; // Get the type of MyClass. Type^ myType = MyClass::typeid; try { // Get the FieldInfo of MyClass. array<FieldInfo^>^myFields = myType->GetFields( static_cast<BindingFlags>(BindingFlags::Public | BindingFlags::Instance) ); // Display the values of the fields. Console::WriteLine( "\nDisplaying the values of the fields of {0}.\n", myType ); for ( int i = 0; i < myFields->Length; i++ ) { Console::WriteLine( "The value of {0} is: {1}", myFields[ i ]->Name, myFields[ i ]->GetValue( myInstance ) ); } } catch ( Exception^ e ) { Console::WriteLine( "Exception : {0}", e->Message ); } }
- ReflectionPermission
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
- ReflectionPermission
for accessing non-public fields regardless of their grant set. Associated enumeration: ReflectionPermissionFlag::MemberAccess
- ReflectionPermission
when invoked late-bound through mechanisms such as Type::InvokeMember. Associated enumeration: ReflectionPermissionFlag::MemberAccess.
Windows 7, Windows Vista SP1 or later, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008 (Server Core not supported), Windows Server 2008 R2 (Server Core supported with SP1 or later), Windows Server 2003 SP2
The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
Note