FieldInfo.SetValue メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
指定したオブジェクトのフィールドに、指定した値を設定します。
オーバーロード
SetValue(Object, Object) |
指定したオブジェクトでサポートされているフィールドの値を設定します。 |
SetValue(Object, Object, BindingFlags, Binder, CultureInfo) |
派生クラスでオーバーライドされた場合に、指定したオブジェクトでサポートされているフィールドの値を設定します。 |
SetValue(Object, Object)
- ソース:
- 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 ストア アプリ または ポータブル クラス ライブラリでは、代わりに catch を使用 Exception します。
例
次の例では、フィールドの値を設定し、値を取得して表示し、フィールドを変更して結果を表示します。
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".
注釈
このメソッドは、 オブジェクト obj
のこのインスタンスによって反映されるフィールドに割り当てますvalue
。 フィールドが静的な場合、 obj
は無視されます。 非静的フィールドの場合、 obj
は、フィールドを継承または宣言するクラスのインスタンスである必要があります。 新しい値は として Object
渡されます。 たとえば、フィールドの型が Boolean の場合、適切なブール値を持つ の Object
インスタンスが渡されます。 値を設定する前に、 SetValue
ユーザーがアクセス許可を持っているかどうかを確認します。 この最後のメソッドは、次 SetValue
のメソッドを呼び出すための便利なメソッドです。
このメソッドを使用して、静的な init-only (readonly
C# の場合) フィールドの値を確実に設定することはできません。 .NET Core 3.0 以降のバージョンでは、静的な init 専用フィールドに値を設定しようとすると、例外がスローされます。
注意
完全に信頼されたコードには、リフレクションを使用してプライベート コンストラクター、メソッド、フィールド、プロパティにアクセスして呼び出すために必要なアクセス許可があります。
注意
.NET Framework 2.0 Service Pack 1 以降では、このメソッドを使用して、呼び出し元に フラグが付与ReflectionPermissionReflectionPermissionFlag.RestrictedMemberAccessされている場合、および非パブリック メンバーの許可セットが呼び出し元の許可セットまたはそのサブセットに制限されている場合は、非パブリック メンバーにアクセスできます。 ( リフレクションのセキュリティに関する考慮事項に関するページを参照してください)。
この機能を使用するには、アプリケーションで .NET Framework 3.5 以降をターゲットにする必要があります。
適用対象
SetValue(Object, Object, BindingFlags, Binder, CultureInfo)
- ソース:
- 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-only (readonly
C# の場合) フィールドの値を確実に設定することはできません。 .NET Core 3.0 以降のバージョンでは、静的な init 専用フィールドに値を設定しようとすると、例外がスローされます。
注意
完全に信頼されたコードには、リフレクションを使用してプライベート コンストラクター、メソッド、フィールド、プロパティにアクセスして呼び出すために必要なアクセス許可があります。
注意
.NET Framework 2.0 Service Pack 1 以降では、このメソッドを使用して、呼び出し元に フラグが付与ReflectionPermissionReflectionPermissionFlag.RestrictedMemberAccessされている場合、および非パブリック メンバーの許可セットが呼び出し元の許可セットまたはそのサブセットに制限されている場合は、非パブリック メンバーにアクセスできます。 ( リフレクションのセキュリティに関する考慮事項に関するページを参照してください)。
この機能を使用するには、アプリケーションで .NET Framework 3.5 以降をターゲットにする必要があります。
適用対象
.NET