FieldInfo.GetValue(Object) Methode

Definitie

Wanneer deze wordt overschreven in een afgeleide klasse, wordt de waarde geretourneerd van een veld dat wordt ondersteund door een bepaald object.

public:
 abstract System::Object ^ GetValue(System::Object ^ obj);
public abstract object GetValue(object obj);
abstract member GetValue : obj -> obj
Public MustOverride Function GetValue (obj As Object) As Object

Parameters

obj
Object

Het object waarvan de veldwaarde wordt geretourneerd.

Retouren

Een object met de waarde van het veld dat door dit exemplaar wordt weerspiegeld.

Implementeringen

Uitzonderingen

Het veld is niet statisch en obj is null.

Opmerking: In .NET voor Windows Store-apps of de Portable Class Library kunt u in plaats daarvan Exception vangen.

Een veld is gemarkeerd als letterlijk, maar het veld heeft geen van de geaccepteerde letterlijke typen.

De beller is niet gemachtigd om toegang te krijgen tot dit veld.

Opmerking: In .NET voor Windows Store-apps of de Portable Class Library, haalt u in plaats daarvan de uitzondering van de basisklasse op, MemberAccessException.

De methode wordt niet gedeclareerd noch overgenomen door de klasse van obj.

Voorbeelden

In het volgende voorbeeld wordt de GetValue methode gebruikt om de waarde van een statisch veld op te halen. Houd er rekening mee dat de waarde van het obj argument is null.

using System;
using System.Reflection;

class Example
{
    public static String val = "test";

    public static void Main()
    {
        FieldInfo fld = typeof(Example).GetField("val");
        Console.WriteLine(fld.GetValue(null));
        val = "hi";
        Console.WriteLine(fld.GetValue(null));
    }
}
// The example displays the following output:
//     test
//     hi
Imports System.Reflection

Class Example
    Public Shared val As String = "test"
    
    Public Shared Sub Main()
        Dim fld As FieldInfo = GetType(Example).GetField("val")
        Console.WriteLine(fld.GetValue(Nothing))
        val = "hi"
        Console.WriteLine(fld.GetValue(Nothing))
    End Sub 
End Class 
' The example displays the following output:
'     test
'     hi

In het volgende voorbeeld wordt een matrix opgehaald met FieldInfo objecten die de velden van het FieldsClass type vertegenwoordigen en wordt vervolgens de GetValue waarde van elk veld voor het fieldsInst object weergegeven.

using System;
using System.Reflection;

public class FieldsClass
{
    public string fieldA;
    public string fieldB;

    public FieldsClass()
    {
        fieldA = "A public field";
        fieldB = "Another public field";
    }
}

public class Example
{
    public static void Main()
    {
        FieldsClass fieldsInst = new FieldsClass();
        // Get the type of FieldsClass.
        Type fieldsType = typeof(FieldsClass);

        // Get an array of FieldInfo objects.
        FieldInfo[] fields = fieldsType.GetFields(BindingFlags.Public
            | BindingFlags.Instance);
        // Display the values of the fields.
        Console.WriteLine("Displaying the values of the fields of {0}:",
            fieldsType);
        for(int i = 0; i < fields.Length; i++)
        {
            Console.WriteLine("   {0}:\t'{1}'",
                fields[i].Name, fields[i].GetValue(fieldsInst));
        }
    }
}
// The example displays the following output:
//     Displaying the values of the fields of FieldsClass:
//        fieldA:      'A public field'
//        fieldB:      'Another public field'
Imports System.Reflection

Public Class FieldsClass
    Public fieldA As String
    Public fieldB As String

    Public Sub New()
        fieldA = "A public field"
        fieldB = "Another public field"
    End Sub 
End Class 

Public Module Example
    Public Sub Main()
        Dim fieldsInst As New FieldsClass()
        ' Get the type of FieldsClass.
        Dim fieldsType As Type = GetType(FieldsClass)

        ' Get an array of FieldInfo objects.
        Dim fields As FieldInfo() = fieldsType.GetFields(BindingFlags.Public Or BindingFlags.Instance)
        ' Display the values of the fields.
        Console.WriteLine("Displaying the values of the fields of {0}:", fieldsType)
        For i As Integer = 0 To fields.Length - 1
            Console.WriteLine("   {0}:{2}'{1}'",
                fields(i).Name, fields(i).GetValue(fieldsInst), vbTab)
        Next 
    End Sub 
End Module
' The example displays the following output:
'     Displaying the values of the fields of FieldsClass:
'        fieldA:      'A public field'
'        fieldB:      'Another public field'

Opmerkingen

Als het veld statisch is, obj wordt dit genegeerd. Voor niet-statische velden obj moet het een exemplaar zijn van een klasse die het veld over neemt of declareert. Houd er rekening mee dat het retourtype GetValue is Object. Als het veld bijvoorbeeld een Booleaanse primitieve waarde bevat, wordt een exemplaar met Object de juiste Booleaanse waarde geretourneerd. Voordat u de waarde retourneert, GetValue controleert u of de gebruiker toegangsmachtigingen heeft.

Note

Toegangsbeperkingen worden genegeerd voor volledig vertrouwde code. Dat wil gezegd, privéconstructors, methoden, velden en eigenschappen kunnen worden geopend en aangeroepen via reflectie wanneer de code volledig wordt vertrouwd.

Note

Deze methode kan worden gebruikt voor toegang tot niet-openbare leden als de beller is verleend ReflectionPermission met de ReflectionPermissionFlag.RestrictedMemberAccess vlag en als de toekenningsset van de niet-openbare leden is beperkt tot de toekenningsset van de beller of een subset daarvan. (Zie Beveiligingsoverwegingen voor reflectie.)

Als u deze functionaliteit wilt gebruiken, moet uw toepassing zich richten op .NET Framework 3.5 of hoger.

Van toepassing op

Zie ook