FieldInfo.SetValue Metódus

Definíció

Az adott objektum mezőjének értékét az adott értékre állítja.

Túlterhelések

Name Description
SetValue(Object, Object)

Az adott objektum által támogatott mező értékét állítja be.

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

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

SetValue(Object, Object)

Forrás:
FieldInfo.cs
Forrás:
FieldInfo.cs
Forrás:
FieldInfo.cs
Forrás:
FieldInfo.cs
Forrás:
FieldInfo.cs

Az adott objektum által támogatott mező értékét állítja be.

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)

Paraméterek

obj
Object

Az az objektum, amelynek a mezőértéke be lesz állítva.

value
Object

A mezőhöz rendelendő érték.

Megvalósítás

Kivételek

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 obj paraméter és null a mező egy példánymező.

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

A mező nem létezik az objektumon.

-vagy-

A value paraméter nem konvertálható és tárolható a mezőben.

Példák

Az alábbi példa egy mező értékét állítja be, lekéri és megjeleníti az értéket, módosítja a mezőt, és megjeleníti az eredményt.

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".

Megjegyzések

Ez a metódus a jelen példány által az objektumon valuetükröződő mezőhöz lesz hozzárendelveobj. 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. Az új érték átadása Object. Ha például a mező típusa logikai, akkor a megfelelő logikai értékkel rendelkező példány Object lesz átadva. Az érték beállítása előtt ellenőrizze, SetValue hogy a felhasználó rendelkezik-e hozzáférési engedéllyel. Ez a végső metódus a következő SetValue metódus meghívására szolgáló egyszerű metódus.

Ez a módszer nem használható statikus, init-only (readonly C#-ban) mezők értékeinek megbízható beállítására. A .NET verziók kivételt képeznek, ha egy statikus, init-only mező értékét próbál beállítani.

Note

A teljes mértékben megbízható kód rendelkezik a magánkonstruktorok, metódusok, mezők és tulajdonságok tükröződésekkel való eléréséhez és meghívásához szükséges engedélyekkel.

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:

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

Forrás:
FieldInfo.cs
Forrás:
FieldInfo.cs
Forrás:
FieldInfo.cs
Forrás:
FieldInfo.cs
Forrás:
FieldInfo.cs

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

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)

Paraméterek

obj
Object

Az az objektum, amelynek a mezőértéke be lesz állítva.

value
Object

A mezőhöz rendelendő érték.

invokeAttr
BindingFlags

Ennek a mezőnek a mezője Binder határozza meg a kívánt kötés típusát (példáulBinder.CreateInstance).Binder.ExactBinding

binder
Binder

Olyan tulajdonságok halmaza, amelyek lehetővé teszik az argumentumtípusok kötését, kényszerítését és a tagok meghívását tükröződés útján. Ha binder igen null, akkor Binder.DefaultBinding a rendszer használja.

culture
CultureInfo

Egy adott kultúra szoftverbeállításai.

Megvalósítás

Kivételek

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

A obj paraméter és null a mező egy példánymező.

A mező nem létezik az objektumon.

-vagy-

A value paraméter nem konvertálható és tárolható a mezőben.

Megjegyzések

Ez a metódus a jelen példány által tükrözött mezőhöz lesz hozzárendelve value a következőn obj: . 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. Az új érték átadása Object. Ha például a mező típusa, Booleana megfelelő logikai értékkel rendelkező példány Object lesz átadva. Az érték beállítása előtt ellenőrizze, SetValue hogy a felhasználó rendelkezik-e hozzáférési engedéllyel.

Ez a módszer nem használható statikus, init-only (readonly C#-ban) mezők értékeinek megbízható beállítására. A .NET kivételt eredményez, ha egy statikus, init-only mező értékét próbálja beállítani.

Note

A teljes mértékben megbízható kód rendelkezik a magánkonstruktorok, metódusok, mezők és tulajdonságok tükröződésekkel való eléréséhez és meghívásához szükséges engedélyekkel.

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 következőre érvényes: