Freigeben über


FieldInfo.GetValue(Object) Methode

Definition

Wenn eine abgeleitete Klasse überschrieben wird, wird der Wert eines Felds zurückgegeben, das von einem bestimmten Objekt unterstützt wird.

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

Parameter

obj
Object

Das Objekt, dessen Feldwert zurückgegeben wird.

Gibt zurück

Ein Objekt, das den Wert des Felds enthält, das von dieser Instanz wiedergegeben wird.

Implementiert

Ausnahmen

Das Feld ist nicht statisch und obj ist null.

Ein Feld ist als Literal gekennzeichnet, das Feld verfügt jedoch nicht über einen der akzeptierten Literaltypen.

Der Aufrufer verfügt nicht über die Berechtigung für den Zugriff auf dieses Feld.

Die Methode wird weder deklariert noch von der Klasse von objgeerbt.

Beispiele

Im folgenden Beispiel wird die GetValue Methode verwendet, um den Wert eines statischen Felds abzurufen. Beachten Sie, dass der Wert des obj Arguments lautet 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

Im folgenden Beispiel wird ein Array von FieldInfo Objekten abgerufen, das die Felder des FieldsClass Typs darstellt, und ruft dann den GetValue Wert der einzelnen Felder für das fieldsInst Objekt auf.

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'

Hinweise

Wenn das Feld statisch ist, obj wird ignoriert. Bei nicht statischen Feldern sollte es sich um eine Instanz einer Klasse handeln, obj die das Feld erbt oder deklariert. Beachten Sie, dass der Rückgabetyp von GetValue .Object Wenn das Feld beispielsweise einen booleschen Grundtypwert enthält, wird eine Instanz mit Object dem entsprechenden booleschen Wert zurückgegeben. Überprüfen Sie vor dem Zurückgeben des Werts, GetValue ob der Benutzer über Zugriffsberechtigungen verfügt.

Note

Zugriffsbeschränkungen werden für voll vertrauenswürdigen Code ignoriert. Das heißt, auf private Konstruktoren, Methoden, Felder und Eigenschaften kann über Spiegelung zugegriffen und aufgerufen werden, wenn der Code vollständig vertrauenswürdig ist.

Note

Diese Methode kann verwendet werden, um auf nicht öffentliche Member zuzugreifen, wenn der Aufrufer mit der ReflectionPermission Kennzeichnung erteilt ReflectionPermissionFlag.RestrictedMemberAccess wurde und wenn der Grant-Satz der nicht öffentlichen Mitglieder auf den Grant-Satz des Aufrufers oder eine Teilmenge davon beschränkt ist. (Siehe Sicherheitsüberlegungen zur Reflexion.)

Um diese Funktionalität zu verwenden, sollte Ihre Anwendung auf .NET Framework 3.5 oder höher abzielen.

Gilt für:

Weitere Informationen