FieldInfo.SetValue Метод
Определение
Важно!
Некоторые сведения относятся к предварительной версии продукта, в которую до выпуска могут быть внесены существенные изменения. Майкрософт не предоставляет никаких гарантий, явных или подразумеваемых, относительно приведенных здесь сведений.
Задает значение поля для заданного объекта заданным значением.
Перегрузки
| Имя | Описание |
|---|---|
| SetValue(Object, Object) |
Задает значение поля, поддерживаемого заданным объектом. |
| SetValue(Object, Object, BindingFlags, Binder, CultureInfo) |
При переопределении в производном классе задает значение поля, поддерживаемого заданным объектом. |
SetValue(Object, Object)
- Исходный код:
- FieldInfo.cs
- Исходный код:
- FieldInfo.cs
- Исходный код:
- FieldInfo.cs
- Исходный код:
- FieldInfo.cs
- Исходный код:
- FieldInfo.cs
Задает значение поля, поддерживаемого заданным объектом.
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)
Параметры
- obj
- Object
Объект, значение поля которого будет задано.
- value
- Object
Значение, которое нужно назначить полю.
Реализации
Исключения
Вызывающий объект не имеет разрешения на доступ к этому полю.
Примечание. Вместо этого в .NET для приложений Магазина Windows или переносимой библиотеке классов перехватывает исключение MemberAccessExceptionбазового класса.
Параметр obj имеет значение null , а поле — это поле экземпляра.
Примечание. Вместо этого в .NET для приложений Магазина Windows или переносимой библиотеке классов перехватывается Exception .
Поле не существует в объекте.
–или–
Параметр 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".
Комментарии
Этот метод назначит value поле, отраженное этим экземпляром в объекте obj. Если поле является статическим, obj будет игнорироваться. Для нестатических полей obj должен быть экземпляр класса, наследующего или объявляющего поле. Новое значение передается в виде Object. Например, если тип поля является логическим, передается экземпляр Object с соответствующим логическим значением. Перед заданием значения проверяет, SetValue имеет ли пользователь разрешение на доступ. Этот окончательный метод — это удобный метод для вызова следующего SetValue метода.
Этот метод нельзя использовать для надежного задания значений статических инициативных полей (readonly в C#). В версиях .NET исключение возникает при попытке задать значение в статическом поле только для инициализации.
Замечание
Полностью доверенный код имеет разрешения, необходимые для доступа к частным конструкторам, методам, полям и свойствам с помощью отражения.
Замечание
Этот метод можно использовать для доступа к недоступным членам, если вызывающий объект был предоставлен ReflectionPermission с ReflectionPermissionFlag.RestrictedMemberAccess флагом, и если набор грантов, не являющихся открытыми, ограничен набором предоставления вызывающего объекта или подмножеством. (См. вопросы безопасности для отражения.)
Чтобы использовать эту функцию, приложение должно использовать .NET Framework 3.5 или более поздней версии.
Применяется к
SetValue(Object, Object, BindingFlags, Binder, CultureInfo)
- Исходный код:
- FieldInfo.cs
- Исходный код:
- FieldInfo.cs
- Исходный код:
- FieldInfo.cs
- Исходный код:
- FieldInfo.cs
- Исходный код:
- FieldInfo.cs
При переопределении в производном классе задает значение поля, поддерживаемого заданным объектом.
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)
Параметры
- obj
- Object
Объект, значение поля которого будет задано.
- value
- Object
Значение, которое нужно назначить полю.
- invokeAttr
- BindingFlags
Поле Binder , указывающее тип требуемой привязки (например, Binder.CreateInstance или Binder.ExactBinding).
- binder
- Binder
Набор свойств, который включает привязку, приведение типов аргументов и вызов элементов с помощью отражения. В binder противном случае nullBinder.DefaultBinding используется.
- culture
- CultureInfo
Параметры программного обеспечения определенного языка и региональных параметров.
Реализации
Исключения
Вызывающий объект не имеет разрешения на доступ к этому полю.
Параметр obj имеет значение null , а поле — это поле экземпляра.
Поле не существует в объекте.
–или–
Параметр value нельзя преобразовать и сохранить в поле.
Комментарии
Этот метод назначит value поле, отраженное этим экземпляром obj. Если поле является статическим, obj будет игнорироваться. Для нестатических полей obj должен быть экземпляр класса, наследующего или объявляющего поле. Новое значение передается в виде Object. Например, если тип поля имеет тип Boolean, передается экземпляр Object с соответствующим логическим значением. Перед заданием значения проверяет, SetValue имеет ли пользователь разрешение на доступ.
Этот метод нельзя использовать для надежного задания значений статических инициативных полей (readonly в C#). В .NET исключение возникает, если вы пытаетесь задать значение в статическом поле только для инициализации.
Замечание
Полностью доверенный код имеет разрешения, необходимые для доступа к частным конструкторам, методам, полям и свойствам с помощью отражения.
Замечание
Этот метод можно использовать для доступа к недоступным членам, если вызывающий объект был предоставлен ReflectionPermission с ReflectionPermissionFlag.RestrictedMemberAccess флагом, и если набор грантов, не являющихся открытыми, ограничен набором предоставления вызывающего объекта или подмножеством. (См. вопросы безопасности для отражения.)