Export (0) Print
Expand All

FieldInfo.GetValue Method

When overridden in a derived class, returns the value of a field supported by a given object.

[Visual Basic]
Public MustOverride Function GetValue( _
   ByVal obj As Object _
) As Object
[C#]
public abstract object GetValue(
 object obj
);
[C++]
public: virtual Object* GetValue(
 Object* obj
) = 0;
[JScript]
public abstract function GetValue(
   obj : Object
) : Object;

Parameters

obj
The object whose field value will be returned.

Return Value

An object containing the value of the field reflected by this instance.

Exceptions

Exception Type Condition
TargetException The field is non-static and obj is a 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.

Remarks

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.

Example

[Visual Basic] 
' 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]

[C#] 
// 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));
    }
}

[C++] 
// The following example demonstrates getting
// a field value directly, without having an object,
// by defining it as a static field.

#using <mscorlib.dll>

using namespace System;
using namespace System::Reflection;

__gc class MyClass {
public:
   static String*  val = S"test";
};

int main() {
   FieldInfo*  myf = __typeof(MyClass)->GetField(S"val");
   Console::WriteLine(myf->GetValue(0));
   MyClass::val = S"hi";
   Console::WriteLine(myf->GetValue(0));
}

[Visual Basic, C#, C++] The following example retrieves the fields of MyClass and displays the field values.

[Visual Basic] 

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

[C#] 

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);
        }
    }
}

[C++] 

#using <mscorlib.dll>

using namespace System;
using namespace System::Reflection;

public __gc class MyClass 
{
public:
   String* myFieldA;
   String* myFieldB; 
   MyClass()
   {
      myFieldA = S"A public field";
      myFieldB = S"Another public field";
   }
};

int main()
{
   MyClass* myInstance = new MyClass();
   // Get the type of MyClass.
   Type* myType = __typeof(MyClass);
   try {
      // Get the FieldInfo of MyClass.
      FieldInfo* myFields[] = myType->GetFields(
         static_cast<BindingFlags>(BindingFlags::Public | BindingFlags::Instance));
      // Display the values of the fields.
      Console::WriteLine(S"\nDisplaying the values of the fields of {0}.\n",
         myType);
      for (int i = 0; i < myFields->Length; i++) {
         Console::WriteLine(S"The value of {0} is: {1}",
            myFields[i]->Name, myFields[i]->GetValue(myInstance));
      }
   } catch (FieldAccessException* e) {
      Console::WriteLine(S"FieldAccessException : {0}", e->Message);
   } catch (TargetException* e) {
      Console::WriteLine(S"TargetException : {0}", e->Message);
   } catch (ExecutionEngineException* e) {
      Console::WriteLine(S"ExecutionEngineException : {0}", e->Message);
   } catch (MemberAccessException* e) {
      Console::WriteLine(S"MemberAccessException : {0}", e->Message);
   } catch (Exception* e) {
      Console::WriteLine(S"Exception : {0}", e->Message);
   }
}

[JScript] No example is available for JScript. To view a Visual Basic, C#, or C++ example, click the Language Filter button Language Filter in the upper-left corner of the page.

Requirements

Platforms: Windows 98, Windows NT 4.0, Windows Millennium Edition, Windows 2000, Windows XP Home Edition, Windows XP Professional, Windows Server 2003 family, .NET Compact Framework, Common Language Infrastructure (CLI) Standard

.NET Framework Security: 

See Also

FieldInfo Class | FieldInfo Members | System.Reflection Namespace | Object

Show:
© 2014 Microsoft