FieldInfo.GetValue(Object) Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
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.