FieldInfo.GetValue(Object) Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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ší.