FieldInfo.GetValue(Object) Metódus

Definíció

Ha egy származtatott osztályban felül van bírálva, egy adott objektum által támogatott mező értékét adja vissza.

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

Paraméterek

obj
Object

Az az objektum, amelynek a mezőértékét visszaadja a rendszer.

Válaszok

A jelen példány által tükrözött mező értékét tartalmazó objektum.

Megvalósítás

Kivételek

A mező nem statikus, és obj az null.

Megjegyzés: Az .NET Windows Áruházbeli alkalmazások vagy a Portable Osztálytár esetében inkább Exception.

A mező konstansként van megjelölve, de a mező nem rendelkezik az elfogadott literális típusok egyikével.

A hívónak nincs engedélye a mező elérésére.

Megjegyzés: Az .NET Windows Áruházbeli alkalmazások vagy a Portable Class Library esetében inkább az alaposztály kivételét MemberAccessException.

A metódust nem deklarálja és nem örökli az osztály.obj

Példák

Az alábbi példa egy statikus mező értékének lekérésére használja a GetValue metódust. Vegye figyelembe, hogy az obj argumentum értéke .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

Az alábbi példa egy objektumtömböt FieldInfo kér le, amely a FieldsClass típus mezőit jelöli, majd meghívja azt GetValue az objektum egyes mezőinek értékének megjelenítéséhez 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'

Megjegyzések

Ha a mező statikus, obj a rendszer figyelmen kívül hagyja. Nem statikus mezők esetén olyan osztálypéldánynak kell lennie, obj amely örökli vagy deklarálja a mezőt. Vegye figyelembe, hogy a visszatérési GetValue típus az Object. Ha például a mező logikai primitív értéket tartalmaz, a megfelelő logikai értékkel rendelkező példány Object lesz visszaadva. Az érték visszaadása előtt ellenőrizze, GetValue hogy a felhasználó rendelkezik-e hozzáférési engedéllyel.

Note

A hozzáférési korlátozások figyelmen kívül lesznek hagyva a teljes mértékben megbízható kód esetében. A magánkonstruktorok, metódusok, mezők és tulajdonságok tehát akkor érhetők el és hívhatók meg tükröződésen keresztül, ha a kód teljes mértékben megbízható.

Note

Ez a módszer akkor használható a nem nyilvános tagok elérésére, ha a hívó a jelölővel ReflectionPermission rendelkezikReflectionPermissionFlag.RestrictedMemberAccess, és ha a nem nyilvános tagok támogatási készlete a hívó támogatási csoportjára vagy annak egy részhalmazára korlátozódik. (Lásd a tükröződés biztonsági szempontjait.)

A funkció használatához az alkalmazásnak .NET Framework 3.5-ös vagy újabb verziójára kell irányulnia.

A következőre érvényes:

Lásd még