FieldInfo.SetValue 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.
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.)