FieldInfo.SetValue メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
指定したオブジェクトのフィールドの値を指定した値に設定します。
オーバーロード
| 名前 | 説明 |
|---|---|
| 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 for Windows ストア アプリ または ポータブル クラス ライブラリでは、代わりに基底クラスの例外 MemberAccessExceptionキャッチします。
obj パラメーターはnullされ、フィールドはインスタンス フィールドです。
注: .NET for Windows ストア アプリ または ポータブル クラス ライブラリでは、代わりに Exception をキャッチします。
例
次の使用例は、フィールドの値の設定、値の取得と表示、フィールドの変更、結果の表示を行います。
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".
注釈
このメソッドは、オブジェクト objのこのインスタンスによって反映されるフィールドにvalueを割り当てます。 フィールドが静的な場合、 obj は無視されます。 非静的フィールドの場合、 obj は、フィールドを継承または宣言するクラスのインスタンスである必要があります。 新しい値は Objectとして渡されます。 たとえば、フィールドの型が Boolean の場合、適切なブール値を持つ Object のインスタンスが渡されます。 値を設定する前に、 SetValue はユーザーがアクセス許可を持っているかどうかを確認します。 この最後のメソッドは、次の SetValue メソッドを呼び出すための便利なメソッドです。
このメソッドを使用して、静的な init 専用 (C# でreadonly ) フィールドの値を確実に設定することはできません。 .NET バージョンでは、静的な init 専用フィールドに値を設定しようとすると、例外がスローされます。
注
完全に信頼されたコードには、リフレクションを使用してプライベート コンストラクター、メソッド、フィールド、およびプロパティにアクセスして呼び出すために必要なアクセス許可があります。
注
このメソッドを使用すると、呼び出し元が ReflectionPermissionFlag.RestrictedMemberAccess フラグを持つReflectionPermissionを許可されている場合、および非パブリック メンバーの許可セットが呼び出し元の許可セットまたはそのサブセットに制限されている場合に、非パブリック メンバーにアクセスできます。 ( リフレクションのセキュリティに関する考慮事項を参照してください)。
この機能を使用するには、アプリケーションで .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.CreateInstanceやBinder.ExactBindingなど) を指定するBinderのフィールド。
- binder
- Binder
バインディング、引数型の強制変換、およびリフレクションによるメンバーの呼び出しを可能にするプロパティのセット。
binderがnullされている場合は、Binder.DefaultBindingが使用されます。
- culture
- CultureInfo
特定のカルチャのソフトウェアの好み。
実装
例外
呼び出し元には、このフィールドにアクセスする権限がありません。
obj パラメーターはnullされ、フィールドはインスタンス フィールドです。
注釈
このメソッドは、objのこのインスタンスによって反映されるフィールドにvalueを割り当てます。 フィールドが静的な場合、 obj は無視されます。 非静的フィールドの場合、 obj は、フィールドを継承または宣言するクラスのインスタンスである必要があります。 新しい値は Objectとして渡されます。 たとえば、フィールドの型が Booleanの場合、適切なブール値を持つ Object のインスタンスが渡されます。 値を設定する前に、 SetValue はユーザーがアクセス許可を持っているかどうかを確認します。
このメソッドを使用して、静的な init 専用 (C# でreadonly ) フィールドの値を確実に設定することはできません。 .NET では、静的な init 専用フィールドに値を設定しようとすると、例外がスローされます。
注
完全に信頼されたコードには、リフレクションを使用してプライベート コンストラクター、メソッド、フィールド、およびプロパティにアクセスして呼び出すために必要なアクセス許可があります。
注
このメソッドを使用すると、呼び出し元が ReflectionPermissionFlag.RestrictedMemberAccess フラグを持つReflectionPermissionを許可されている場合、および非パブリック メンバーの許可セットが呼び出し元の許可セットまたはそのサブセットに制限されている場合に、非パブリック メンバーにアクセスできます。 ( リフレクションのセキュリティに関する考慮事項を参照してください)。