Sdílet prostřednictvím


FieldInfo.GetValue(Object) Metoda

Definice

Při přepsání v odvozené třídě vrátí hodnotu pole podporovaného daným objektem.

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

Parametry

obj
Object

Objekt, jehož hodnota pole bude vrácena.

Návraty

Objekt obsahující hodnotu pole, které tato instance odráží.

Implementuje

Výjimky

Pole není statické a obj je null.

Pole je označené literálem, ale pole nemá jeden z přijatých typů literálů.

Volající nemá oprávnění pro přístup k tomuto poli.

Metoda není deklarována ani zděděna třídou .obj

Příklady

Následující příklad používá metodu GetValue k načtení hodnoty statického pole. Všimněte si, že hodnota argumentu obj je 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

Následující příklad načte pole FieldInfo objektů, které představují pole FieldsClass typu, a potom zavolá GetValue , aby se zobrazila hodnota každého pole objektu fieldsInst .

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'

Poznámky

Pokud je pole statické, obj bude ignorováno. Pro nestatická pole by měla být instance třídy, obj která dědí nebo deklaruje pole. Všimněte si, že návratový GetValue typ je Object. Pokud například pole obsahuje logickou primitivní hodnotu, vrátí se instance Object s příslušnou logickou hodnotou. Před vrácením hodnoty zkontroluje, GetValue jestli má uživatel přístupové oprávnění.

Note

Omezení přístupu se ignorují pro plně důvěryhodný kód. To znamená, že k soukromým konstruktorům, metodám, polím a vlastnostem lze přistupovat a vyvolat reflexí, kdykoli je kód plně důvěryhodný.

Note

Tuto metodu lze použít pro přístup k neveřejným členům, pokud byl volající udělen ReflectionPermission příznakem ReflectionPermissionFlag.RestrictedMemberAccess a pokud je sada udělení nepřístupných členů omezena na sadu grantů volajícího nebo její podmnožinu. (Viz aspekty zabezpečení pro reflexi.)

Pokud chcete tuto funkci používat, měla by vaše aplikace cílit na .NET Framework 3.5 nebo novější.

Platí pro

Viz také