FieldInfo.GetValue(Object) Methode
Definition
Wichtig
Einige Informationen beziehen sich auf Vorabversionen, die vor dem Release ggf. grundlegend überarbeitet werden. Microsoft übernimmt hinsichtlich der hier bereitgestellten Informationen keine Gewährleistungen, seien sie ausdrücklich oder konkludent.
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.