FieldInfo.SetValue Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Nastaví hodnotu pole pro daný objekt na danou hodnotu.
Přetížení
SetValue(Object, Object) |
Nastaví hodnotu pole podporované daným objektem. |
SetValue(Object, Object, BindingFlags, Binder, CultureInfo) |
Při přepsání v odvozené třídě nastaví hodnotu pole podporované daným objektem. |
SetValue(Object, Object)
Nastaví hodnotu pole podporované daným objektem.
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)
Parametry
- obj
- Object
Objekt, jehož hodnota pole bude nastavena.
- value
- Object
Hodnota, která má být přiřazena k poli.
Implementuje
Výjimky
Volající nemá oprávnění pro přístup k tomuto poli.
poznámka: v rozhraní .net pro aplikace Windows store nebo přenositelné knihovny třídzachyťte výjimku základní třídy MemberAccessException místo toho.
obj
Parametr je null
a pole je pole instance.
poznámka: v rozhraní .net pro aplikace Windows store nebo přenositelné knihovny tříd, místo toho zachyťte Exception .
Příklady
Následující příklad nastaví hodnotu pole, získá a zobrazí hodnotu, upraví pole a zobrazí výsledek.
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".
Poznámky
Tato metoda se přiřadí value
k poli, které odráží tato instance u objektu obj
. Pokud je pole statické, obj
bude ignorováno. U nestatických polí obj
by měla být instance třídy, která dědí nebo deklaruje pole. Nová hodnota je předána jako Object
. Například pokud je typ pole Boolean, Object
je předána instance s odpovídající logickou hodnotou. Před nastavením hodnoty zkontroluje, SetValue
jestli má uživatel oprávnění k přístupu. Tato konečná metoda je pohodlnější způsob volání následující SetValue
metody.
Tato metoda nemůže být použita pro spolehlivou hodnotu statických polí, pouze init ( readonly
v jazyce C#). V .NET Core 3,0 a novějších verzích je vyvolána výjimka, pokud se pokusíte nastavit hodnotu ve statickém poli určeném pouze pro inicializaci.
Poznámka
Plně důvěryhodný kód má oprávnění, která jsou nutná pro přístup k privátním konstruktorům, metodám, polím a vlastnostem pomocí reflexe a k jejich vyvolání.
Poznámka
od .NET Framework 2,0 s aktualizací Service Pack 1 lze tuto metodu použít pro přístup k neveřejným členům, pokud byl volající udělen ReflectionPermission s ReflectionPermissionFlag.RestrictedMemberAccess příznakem a pokud je udělená sada neveřejných členů omezena na udělenou skupinu volajícího nebo na její podmnožinu. (Další informace najdete v tématu informace o zabezpečení pro reflexi.)
chcete-li použít tuto funkci, vaše aplikace by měla cílit na .NET Framework 3,5 nebo novější.
Platí pro
SetValue(Object, Object, BindingFlags, Binder, CultureInfo)
Při přepsání v odvozené třídě nastaví hodnotu pole podporované daným objektem.
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)
Parametry
- obj
- Object
Objekt, jehož hodnota pole bude nastavena.
- value
- Object
Hodnota, která má být přiřazena k poli.
- invokeAttr
- BindingFlags
Pole Binder
, které určuje typ vazby, který je požadován (například Binder.CreateInstance
nebo Binder.ExactBinding
).
- binder
- Binder
Sada vlastností, která umožňuje vazbu, vynucení typů argumentů a vyvolání členů prostřednictvím reflexe. Pokud binder
je null
, pak Binder.DefaultBinding
se použije.
- culture
- CultureInfo
Preference softwaru konkrétní jazykové verze.
Implementuje
Výjimky
Volající nemá oprávnění pro přístup k tomuto poli.
obj
Parametr je null
a pole je pole instance.
Poznámky
Tato metoda se přiřadí k poli, které se value
projeví v této instanci obj
. Pokud je pole statické, obj
bude ignorováno. U nestatických polí obj
by měla být instance třídy, která dědí nebo deklaruje pole. Nová hodnota je předána jako Object
. Například pokud je typ pole Boolean
, Object
je předána instance s odpovídající logickou hodnotou. Před nastavením hodnoty zkontroluje, SetValue
jestli má uživatel oprávnění k přístupu.
Tato metoda nemůže být použita pro spolehlivou hodnotu statických polí, pouze init ( readonly
v jazyce C#). V .NET Core 3,0 a novějších verzích je vyvolána výjimka, pokud se pokusíte nastavit hodnotu ve statickém poli určeném pouze pro inicializaci.
Poznámka
Plně důvěryhodný kód má oprávnění, která jsou nutná pro přístup k privátním konstruktorům, metodám, polím a vlastnostem pomocí reflexe a k jejich vyvolání.
Poznámka
od .NET Framework 2,0 s aktualizací Service Pack 1 lze tuto metodu použít pro přístup k neveřejným členům, pokud byl volající udělen ReflectionPermission s ReflectionPermissionFlag.RestrictedMemberAccess příznakem a pokud je udělená sada neveřejných členů omezena na udělenou skupinu volajícího nebo na její podmnožinu. (Další informace najdete v tématu informace o zabezpečení pro reflexi.)
chcete-li použít tuto funkci, vaše aplikace by měla cílit na .NET Framework 3,5 nebo novější.