When overridden in a derived class, returns the value of a field supported by a given object.
Namespace:
System.Reflection
Assembly:
mscorlib (in mscorlib.dll)
Visual Basic (Declaration)
Public MustOverride Function GetValue ( _
obj As Object _
) As Object
Dim instance As FieldInfo
Dim obj As Object
Dim returnValue As Object
returnValue = instance.GetValue(obj)
public abstract Object GetValue(
Object obj
)
public:
virtual Object^ GetValue(
Object^ obj
) abstract
public abstract function GetValue(
obj : Object
) : Object
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 nullNothingnullptra null reference (Nothing in Visual Basic). |
| 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. |
' The following example demonstrates getting
' a field value directly, without having an object,
' by defining it as a static field.
Imports System
Imports System.Reflection
Class [MyClass]
Public Shared val As [String] = "test"
Public Shared Sub Main()
Dim myf As FieldInfo = GetType([MyClass]).GetField("val")
Console.WriteLine(myf.GetValue(Nothing))
val = "hi"
Console.WriteLine(myf.GetValue(Nothing))
End Sub 'Main
End Class '[MyClass]
// The following example demonstrates getting
// a field value directly, without having an object,
// by defining it as a static field.
using System;
using System.Reflection;
class MyClass
{
public static String val = "test";
public static void Main()
{
FieldInfo myf = typeof(MyClass).GetField("val");
Console.WriteLine(myf.GetValue(null));
val = "hi";
Console.WriteLine(myf.GetValue(null));
}
}
// 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.
Imports System
Imports System.Reflection
Imports Microsoft.VisualBasic
Public Class MyClass1
Public myFieldA As String
Public myFieldB As String
Public Sub New()
myFieldA = "A public field"
myFieldB = "Another public field"
End Sub 'New
End Class 'MyClass1
Public Class FieldInfo_GetValue
Public Shared Sub Main()
Dim myInstance As New MyClass1()
' Get the type of MyClass1.
Dim myType As Type = GetType(MyClass1)
Try
' Get the FieldInfo of MyClass1.
Dim myFields As FieldInfo() = myType.GetFields((BindingFlags.Public Or BindingFlags.Instance))
' Display the values of the fields.
Console.WriteLine(ControlChars.NewLine & "Displaying the values of the fields of {0}." & ControlChars.NewLine, myType.ToString())
Dim i As Integer
For i = 0 To myFields.Length - 1
Console.WriteLine("The value of the field {0} is: {1}", myFields(i).Name, myFields(i).GetValue(myInstance))
Next i
Catch e As FieldAccessException
Console.WriteLine("FieldAccessException : {0}", e.Message.ToString())
Catch e As TargetException
Console.WriteLine("TargetException : {0}", e.Message.ToString())
Catch e As ExecutionEngineException
Console.WriteLine("ExecutionEngineException : {0}", e.Message.ToString())
Catch e As MemberAccessException
Console.WriteLine("MemberAccessException : {0}", e.Message.ToString())
Catch e As Exception
Console.WriteLine("Exception : {0}", e.Message.ToString())
End Try
End Sub 'Main
End Class 'FieldInfo_GetValue
using System;
using System.Reflection;
public class MyClass
{
public string myFieldA;
public string myFieldB;
public MyClass()
{
myFieldA = "A public field";
myFieldB = "Another public field";
}
}
public class FieldInfo_GetValue
{
public static void Main()
{
MyClass myInstance = new MyClass();
// Get the type of MyClass.
Type myType = typeof(MyClass);
try
{
// Get the FieldInfo of MyClass.
FieldInfo[] myFields = myType.GetFields(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(FieldAccessException e)
{
Console.WriteLine("FieldAccessException : {0}", e.Message);
}
catch(TargetException e)
{
Console.WriteLine("TargetException : {0}", e.Message);
}
catch(ExecutionEngineException e)
{
Console.WriteLine("ExecutionEngineException : {0}", e.Message);
}
catch(MemberAccessException e)
{
Console.WriteLine("MemberAccessException : {0}", e.Message);
}
catch(Exception e)
{
Console.WriteLine("Exception : {0}", e.Message);
}
}
}
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 ( FieldAccessException^ e )
{
Console::WriteLine( "FieldAccessException : {0}", e->Message );
}
catch ( TargetException^ e )
{
Console::WriteLine( "TargetException : {0}", e->Message );
}
catch ( ExecutionEngineException^ e )
{
Console::WriteLine( "ExecutionEngineException : {0}", e->Message );
}
catch ( MemberAccessException^ e )
{
Console::WriteLine( "MemberAccessException : {0}", e->Message );
}
catch ( Exception^ e )
{
Console::WriteLine( "Exception : {0}", e->Message );
}
}
Windows 7, Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP Starter Edition, Windows Server 2008 R2, Windows Server 2008, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98, Windows CE, Windows Mobile for Smartphone, Windows Mobile for Pocket PC, Xbox 360, Zune
The .NET Framework and .NET Compact Framework do not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.
.NET Framework
Supported in: 3.5, 3.0, 2.0, 1.1, 1.0
.NET Compact Framework
Supported in: 3.5, 2.0, 1.0
XNA Framework
Supported in: 3.0, 2.0, 1.0
Reference