FieldInfo.GetValue(Object) Metode

Definisi

Saat ditimpa di kelas turunan, mengembalikan nilai bidang yang didukung oleh objek tertentu.

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

Objek yang nilai bidangnya akan dikembalikan.

Mengembalikan

Objek yang berisi nilai bidang yang tercermin oleh instans ini.

Penerapan

Pengecualian

Bidang ini non-statis dan obj adalah null.

Catatan: Di .NET untuk aplikasi Bursa Windows atau Pustaka Kelas Portabel, tangkap Exception sebagai gantinya.

Bidang ditandai harfiah, tetapi bidang tidak memiliki salah satu jenis harfiah yang diterima.

Pemanggil tidak memiliki izin untuk mengakses bidang ini.

Catatan: Di .NET untuk aplikasi Bursa Windows atau Pustaka Kelas Portabel, tangkap pengecualian kelas dasar, MemberAccessException, sebagai gantinya.

Metode ini tidak dinyatakan atau diwariskan oleh kelas obj.

Contoh

Contoh berikut menggunakan GetValue metode untuk mengambil nilai bidang statis. Perhatikan bahwa nilai obj argumen adalah null.

using namespace System;
using namespace System::Reflection;

ref class Example
{
  public:
     static String^ val = "test";
};

int main()
{
   FieldInfo^ fld = Example::typeid->GetField( "val" );
   Console::WriteLine(fld->GetValue(nullptr) );
   Example::val = "hi";
   Console::WriteLine(fld->GetValue(nullptr) );
}
// The example displays the following output:
//     test
//     hi
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

Contoh berikut mengambil array FieldInfo objek yang mewakili bidang jenis FieldsClass , lalu memanggil GetValue untuk menampilkan nilai setiap bidang untuk fieldsInst objek.

using namespace System;
using namespace System::Reflection;

public ref class FieldsClass
{
  public:
     String^ fieldA;
     String^ fieldB;

     FieldsClass()
     {
        fieldA = "A public field";
        fieldB = "Another public field";
     }
};

int main()
{
   FieldsClass^ fieldsInst = gcnew FieldsClass;
   
   // Get the type of FieldsClass.
   Type^ fieldsType = FieldsClass::typeid;

   // Get the FieldInfo of FieldsClass.
   array<FieldInfo^>^ fields = fieldsType->GetFields(static_cast<BindingFlags>(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'
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'

Keterangan

Jika bidang statis, obj diabaikan. Untuk bidang non-statis, obj harus berupa instans kelas yang mewarisi atau mendeklarasikan bidang . Perhatikan bahwa jenis GetValue pengembalian adalah Object. Misalnya, jika bidang menyimpan nilai primitif Boolean, instans Object dengan nilai Boolean yang sesuai dikembalikan. Sebelum mengembalikan nilai, GetValue periksa untuk melihat apakah pengguna memiliki izin akses.

Catatan

Pembatasan akses diabaikan untuk kode yang sepenuhnya tepercaya. Artinya, konstruktor privat, metode, bidang, dan properti dapat diakses dan dipanggil melalui refleksi setiap kali kode sepenuhnya dipercaya.

Catatan

Dimulai dengan .NET Framework 2.0 Paket Layanan 1, metode ini dapat digunakan untuk mengakses anggota non-publik jika penelepon telah diberikan ReflectionPermission dengan ReflectionPermissionFlag.RestrictedMemberAccess bendera dan jika sekumpulan pemberian anggota non-publik dibatasi untuk set pemberian penelepon, atau subsetnya. (Lihat Pertimbangan Keamanan untuk Refleksi.)

Untuk menggunakan fungsionalitas ini, aplikasi Anda harus menargetkan .NET Framework 3.5 atau yang lebih baru.

Berlaku untuk

Lihat juga