FieldInfo.SetValue Metode

Definisi

Mengatur nilai bidang untuk objek yang diberikan ke nilai yang diberikan.

Overload

SetValue(Object, Object)

Mengatur nilai bidang yang didukung oleh objek yang diberikan.

SetValue(Object, Object, BindingFlags, Binder, CultureInfo)

Saat ditimpa di kelas turunan, mengatur nilai bidang yang didukung oleh objek yang diberikan.

SetValue(Object, Object)

Sumber:
FieldInfo.cs
Sumber:
FieldInfo.cs
Sumber:
FieldInfo.cs

Mengatur nilai bidang yang didukung oleh objek yang diberikan.

public:
 virtual void SetValue(System::Object ^ obj, System::Object ^ value);
public:
 void SetValue(System::Object ^ obj, System::Object ^ value);
public virtual void SetValue (object obj, object value);
public void SetValue (object? obj, object? value);
public void SetValue (object obj, object value);
abstract member SetValue : obj * obj -> unit
override this.SetValue : obj * obj -> unit
member this.SetValue : obj * obj -> unit
Public Overridable Sub SetValue (obj As Object, value As Object)
Public Sub SetValue (obj As Object, value As Object)

Parameter

obj
Object

Objek yang nilai bidangnya akan diatur.

value
Object

Nilai yang akan ditetapkan ke bidang .

Penerapan

Pengecualian

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.

Parameter obj adalah null dan bidang adalah bidang instans.

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

Bidang tidak ada pada objek.

-atau-

Parameter value tidak dapat dikonversi dan disimpan di bidang .

Contoh

Contoh berikut mengatur nilai bidang, mendapatkan dan menampilkan nilai, memodifikasi bidang, dan menampilkan hasilnya.

using namespace System;
using namespace System::Reflection;
using namespace System::Globalization;

public ref class Example
{
private:
   String^ myString;

public:
   Example()
   {
      myString = "Old value";
   }

   property String^ StringProperty 
   {
      String^ get()
      {
         return myString;
      }
   }
};

int main()
{
    Example^ myObject = gcnew Example;
    Type^ myType = Example::typeid;
    FieldInfo^ myFieldInfo = myType->GetField( "myString", 
        BindingFlags::NonPublic | BindingFlags::Instance);
      
    // Display the string before applying SetValue to the field.
    Console::WriteLine( "\nThe field value of myString is \"{0}\".", 
        myFieldInfo->GetValue( myObject ) );
    // Display the SetValue signature used to set the value of a field.
    Console::WriteLine( "Applying SetValue(Object, Object)." );

    // Change the field value using the SetValue method. 
    myFieldInfo->SetValue( myObject, "New value" );     
    // Display the string after applying SetValue to the field.
    Console::WriteLine( "The field value of mystring is \"{0}\".", 
        myFieldInfo->GetValue(myObject));
}
/* This code produces the following output:

The field value of myString is "Old value".
Applying SetValue(Object, Object).
The field value of mystring is "New value".
 */
using System;
using System.Reflection;
using System.Globalization;

public class Example
{
    private string myString;
    public Example()
    {
        myString = "Old value";
    }

    public string StringProperty
    {
        get
        {
            return myString;
        }
    }
}

public class FieldInfo_SetValue
{
    public static void Main()
    {
        Example myObject = new Example();
        Type myType = typeof(Example);
        FieldInfo myFieldInfo = myType.GetField("myString",
            BindingFlags.NonPublic | BindingFlags.Instance);

        // Display the string before applying SetValue to the field.
        Console.WriteLine( "\nThe field value of myString is \"{0}\".",
        myFieldInfo.GetValue(myObject));
        // Display the SetValue signature used to set the value of a field.
        Console.WriteLine( "Applying SetValue(Object, Object).");

        // Change the field value using the SetValue method.
        myFieldInfo.SetValue(myObject, "New value");
        // Display the string after applying SetValue to the field.
        Console.WriteLine( "The field value of mystring is \"{0}\".",
            myFieldInfo.GetValue(myObject));
    }
}

/* This code example produces the following output:

The field value of myString is "Old value".
Applying SetValue(Object, Object).
The field value of mystring is "New value".
 */
Imports System.Reflection
Imports System.Globalization

Public Class Example
   Private myString As String
   
   Public Sub New()
      myString = "Old value"
   End Sub 
   
   ReadOnly Property StringProperty() As String
      Get
         Return myString
      End Get
   End Property
End Class 


Public Module FieldInfo_SetValue
   
   Sub Main()

        Dim myObject As New Example()
        Dim myType As Type = GetType(Example)
        Dim myFieldInfo As FieldInfo = myType.GetField("myString", _
           BindingFlags.NonPublic Or BindingFlags.Instance)

        ' Display the string before applying SetValue to the field.
        Console.WriteLine(vbCrLf & "The field value of myString is ""{0}"".", _
            myFieldInfo.GetValue(myObject))
        ' Display the SetValue signature used to set the value of a field.
        Console.WriteLine("Applying SetValue(Object, Object).")

        ' Change the field value using the SetValue method. 
        myFieldInfo.SetValue(myObject, "New value")
        ' Display the string after applying SetValue to the field.
        Console.WriteLine("The field value of mystring is ""{0}"".", _
            myFieldInfo.GetValue(myObject))

    End Sub 
End Module

' This code example produces the following output:
' The field value of myString is "Old value".
' Applying SetValue(Object, Object).
' The field value of mystring is "New value".

Keterangan

Metode ini akan menetapkan value ke bidang yang tercermin oleh instans ini pada objek obj. Jika bidang statis, obj akan diabaikan. Untuk bidang non-statis, obj harus berupa instans kelas yang mewarisi atau mendeklarasikan bidang . Nilai baru diteruskan sebagai Object. Misalnya, jika jenis bidang adalah Boolean, instans Object dengan nilai Boolean yang sesuai akan diteruskan. Sebelum mengatur nilai, SetValue periksa untuk melihat apakah pengguna memiliki izin akses. Metode akhir ini adalah metode kenyamanan untuk memanggil metode berikut SetValue .

Metode ini tidak dapat digunakan untuk mengatur nilai bidang statis, init-saja (readonly dalam C#) dengan andal. Dalam .NET Core 3.0 dan versi yang lebih baru, pengecualian dilemparkan jika Anda mencoba mengatur nilai pada bidang statis khusus init.

Catatan

Kode yang sepenuhnya tepercaya memiliki izin yang diperlukan untuk mengakses dan memanggil konstruktor, metode, bidang, dan properti privat menggunakan refleksi.

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

SetValue(Object, Object, BindingFlags, Binder, CultureInfo)

Sumber:
FieldInfo.cs
Sumber:
FieldInfo.cs
Sumber:
FieldInfo.cs

Saat ditimpa di kelas turunan, mengatur nilai bidang yang didukung oleh objek yang diberikan.

public:
 abstract void SetValue(System::Object ^ obj, System::Object ^ value, System::Reflection::BindingFlags invokeAttr, System::Reflection::Binder ^ binder, System::Globalization::CultureInfo ^ culture);
public abstract void SetValue (object? obj, object? value, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder? binder, System.Globalization.CultureInfo? culture);
public abstract void SetValue (object obj, object value, System.Reflection.BindingFlags invokeAttr, System.Reflection.Binder binder, System.Globalization.CultureInfo culture);
abstract member SetValue : obj * obj * System.Reflection.BindingFlags * System.Reflection.Binder * System.Globalization.CultureInfo -> unit
Public MustOverride Sub SetValue (obj As Object, value As Object, invokeAttr As BindingFlags, binder As Binder, culture As CultureInfo)

Parameter

obj
Object

Objek yang nilai bidangnya akan diatur.

value
Object

Nilai yang akan ditetapkan ke bidang .

invokeAttr
BindingFlags

Bidang Binder yang menentukan jenis pengikatan yang diinginkan (misalnya, Binder.CreateInstance atau Binder.ExactBinding).

binder
Binder

Sekumpulan properti yang memungkinkan pengikatan, paksaan jenis argumen, dan pemanggilan anggota melalui refleksi. Jika binder adalah null, maka Binder.DefaultBinding digunakan.

culture
CultureInfo

Preferensi perangkat lunak dari budaya tertentu.

Penerapan

Pengecualian

Pemanggil tidak memiliki izin untuk mengakses bidang ini.

Parameter obj adalah null dan bidang adalah bidang instans.

Bidang tidak ada pada objek.

-atau-

Parameter value tidak dapat dikonversi dan disimpan di bidang .

Keterangan

Metode ini akan menetapkan value ke bidang yang tercermin oleh instans ini pada obj. Jika bidang statis, obj akan diabaikan. Untuk bidang non-statis, obj harus berupa instans kelas yang mewarisi atau mendeklarasikan bidang . Nilai baru diteruskan sebagai Object. Misalnya, jika jenis bidang adalah Boolean, instans Object dengan nilai Boolean yang sesuai diteruskan. Sebelum mengatur nilai, SetValue periksa untuk melihat apakah pengguna memiliki izin akses.

Metode ini tidak dapat digunakan untuk mengatur nilai bidang statis, init-saja (readonly dalam C#) dengan andal. Dalam .NET Core 3.0 dan versi yang lebih baru, pengecualian dilemparkan jika Anda mencoba mengatur nilai pada bidang statis khusus init.

Catatan

Kode yang sepenuhnya tepercaya memiliki izin yang diperlukan untuk mengakses dan memanggil konstruktor, metode, bidang, dan properti privat menggunakan refleksi.

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