FieldInfo.SetValue FieldInfo.SetValue FieldInfo.SetValue FieldInfo.SetValue Method

定義

指定したオブジェクトのフィールドに、指定した値を設定します。Sets the value of the field for the given object to the given value.

オーバーロード

SetValue(Object, Object) SetValue(Object, Object) SetValue(Object, Object) SetValue(Object, Object)

指定したオブジェクトでサポートされているフィールドの値を設定します。Sets the value of the field supported by the given object.

SetValue(Object, Object, BindingFlags, Binder, CultureInfo) SetValue(Object, Object, BindingFlags, Binder, CultureInfo) SetValue(Object, Object, BindingFlags, Binder, CultureInfo)

派生クラスでオーバーライドされた場合に、指定したオブジェクトでサポートされているフィールドの値を設定します。When overridden in a derived class, sets the value of the field supported by the given object.

SetValue(Object, Object) SetValue(Object, Object) SetValue(Object, Object) SetValue(Object, Object)

指定したオブジェクトでサポートされているフィールドの値を設定します。Sets the value of the field supported by the given object.

public:
 void SetValue(System::Object ^ obj, System::Object ^ value);
public void SetValue (object obj, object value);
member this.SetValue : obj * obj -> unit
Public Sub SetValue (obj As Object, value As Object)

パラメーター

obj
Object Object Object Object

フィールド値が設定されるオブジェクト。The object whose field value will be set.

value
Object Object Object Object

フィールドに代入する値。The value to assign to the field.

実装

例外

Windows ストア アプリ用 .NET またはポータブル クラス ライブラリでは、基本クラスの例外である MemberAccessException を代わりにキャッチします。In the .NET for Windows Store apps or the Portable Class Library, catch the base class exception, MemberAccessException, instead.

呼び出し元には、このフィールドに対するアクセス許可がありません。The caller does not have permission to access this field.

Windows ストア アプリ用 .NET またはポータブル クラス ライブラリでは、Exception を代わりにキャッチします。In the .NET for Windows Store apps or the Portable Class Library, catch Exception instead.

obj パラメーターは null で、そのフィールドはインスタンス フィールドです。The obj parameter is null and the field is an instance field.

このフィールドはオブジェクト上に存在しません。The field does not exist on the object.

または-or- value パラメーターを変換してフィールドに格納することはできません。The value parameter cannot be converted and stored in the field.

次の例では、フィールドの値を設定し、値を取得して表示し、フィールドを変更して、結果を表示します。The following example sets the value of a field, gets and displays the value, modifies the field, and displays the result.

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".

注釈

このメソッドは、 valueオブジェクトobjのこのインスタンスによってリフレクションされたフィールドにを割り当てます。This method will assign value to the field reflected by this instance on object obj. フィールドが静的である場合obj 、は無視されます。If the field is static, obj will be ignored. 非静的フィールドの場合、 objはフィールドを継承または宣言するクラスのインスタンスである必要があります。For non-static fields, obj should be an instance of a class that inherits or declares the field. 新しい値はとしてObject渡されます。The new value is passed as an Object. たとえば、フィールドの型が boolean の場合、適切なブール値Objectを持つのインスタンスが渡されます。For example, if the field's type is Boolean, an instance of Object with the appropriate Boolean value is passed. 値を設定する前SetValueに、はユーザーがアクセス許可を持っているかどうかを確認します。Before setting the value, SetValue checks to see if the user has access permission. この最後のメソッドは、次SetValueのメソッドを呼び出すための便利なメソッドです。This final method is a convenience method for calling the following SetValue method.

注意

完全に信頼されたコードには、リフレクションを使用してプライベートコンストラクター、メソッド、フィールド、およびプロパティにアクセスして呼び出すために必要なアクセス許可があります。Fully trusted code has the permissions that are needed to access and invoke private constructors, methods, fields, and properties using reflection.

注意

以降では、このメソッドを使用して、呼び出し元がReflectionPermissionFlag.RestrictedMemberAccessフラグで許可ReflectionPermissionされていて、非パブリックメンバーの許可セットが呼び出し元の許可セットまたはサブセットに制限されている場合に、非パブリックメンバーにアクセスできます。 .NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1著作.Starting with the .NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1, this method can be used to access non-public members if the caller has been granted ReflectionPermission with the ReflectionPermissionFlag.RestrictedMemberAccess flag and if the grant set of the non-public members is restricted to the caller's grant set, or a subset thereof. (「リフレクションのセキュリティに関する考慮事項」を参照してください)。(See Security Considerations for Reflection.)

この機能を使用するには、アプリケーションで .NET Framework 3.5.NET Framework 3.5 以降を対象とする必要があります。To use this functionality, your application should target the .NET Framework 3.5.NET Framework 3.5 or later.

セキュリティ

ReflectionPermission
などの機構をInvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[])使用して遅延バインディングが呼び出された場合。when invoked late-bound through mechanisms such as InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]). MemberAccess (関連する列挙体)Associated enumeration: MemberAccess.

SecurityPermission
初期化専用フィールドを更新します。for updating init-only fields. SerializationFormatter (関連する列挙体)Associated enumeration: SerializationFormatter.

SetValue(Object, Object, BindingFlags, Binder, CultureInfo) SetValue(Object, Object, BindingFlags, Binder, CultureInfo) SetValue(Object, Object, BindingFlags, Binder, CultureInfo)

派生クラスでオーバーライドされた場合に、指定したオブジェクトでサポートされているフィールドの値を設定します。When overridden in a derived class, sets the value of the field supported by the given object.

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);
abstract member SetValue : obj * obj * System.Reflection.BindingFlags * System.Reflection.Binder * System.Globalization.CultureInfo -> unit

パラメーター

obj
Object Object Object Object

フィールド値が設定されるオブジェクト。The object whose field value will be set.

value
Object Object Object Object

フィールドに代入する値。The value to assign to the field.

invokeAttr
BindingFlags BindingFlags BindingFlags BindingFlags

必要なバインディングの種類 (Binder.CreateInstanceBinder.ExactBinding など) を指定する Binder のフィールド。A field of Binder that specifies the type of binding that is desired (for example, Binder.CreateInstance or Binder.ExactBinding).

binder
Binder Binder Binder Binder

バインディング、引数型の強制型変換、リフレクションを通じたメンバーの呼び出しを有効にする一連のプロパティ。A set of properties that enables the binding, coercion of argument types, and invocation of members through reflection. bindernull の場合は、Binder.DefaultBinding が使用されます。If binder is null, then Binder.DefaultBinding is used.

culture
CultureInfo CultureInfo CultureInfo CultureInfo

特定のカルチャに関するソフトウェア上の設定。The software preferences of a particular culture.

実装

例外

呼び出し元には、このフィールドに対するアクセス許可がありません。The caller does not have permission to access this field.

obj パラメーターは null で、そのフィールドはインスタンス フィールドです。The obj parameter is null and the field is an instance field.

このフィールドはオブジェクト上に存在しません。The field does not exist on the object.

- または --or- value パラメーターを変換してフィールドに格納することはできません。The value parameter cannot be converted and stored in the field.

注釈

このメソッドは、 valueobjこのインスタンスによってリフレクションされたフィールドにを割り当てます。This method will assign value to the field reflected by this instance on obj. フィールドが静的である場合obj 、は無視されます。If the field is static, obj will be ignored. 非静的フィールドの場合、 objはフィールドを継承または宣言するクラスのインスタンスである必要があります。For non-static fields, obj should be an instance of a class that inherits or declares the field. 新しい値はとしてObject渡されます。The new value is passed as an Object. たとえば、フィールドの型がBooleanの場合、適切なブール値を持つのObjectインスタンスが渡されます。For example, if the field's type is Boolean, an instance of Object with the appropriate Boolean value is passed. 値を設定する前SetValueに、はユーザーがアクセス許可を持っているかどうかを確認します。Before setting the value, SetValue checks to see if the user has access permission.

注意

完全に信頼されたコードには、リフレクションを使用してプライベートコンストラクター、メソッド、フィールド、およびプロパティにアクセスして呼び出すために必要なアクセス許可があります。Fully trusted code has the permissions that are needed to access and invoke private constructors, methods, fields, and properties using reflection.

注意

以降では、このメソッドを使用して、呼び出し元がReflectionPermissionFlag.RestrictedMemberAccessフラグで許可ReflectionPermissionされていて、非パブリックメンバーの許可セットが呼び出し元の許可セットまたはサブセットに制限されている場合に、非パブリックメンバーにアクセスできます。 .NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1著作.Starting with the .NET Framework 2.0 Service Pack 1.NET Framework 2.0 Service Pack 1, this method can be used to access non-public members if the caller has been granted ReflectionPermission with the ReflectionPermissionFlag.RestrictedMemberAccess flag and if the grant set of the non-public members is restricted to the caller's grant set, or a subset thereof. (「リフレクションのセキュリティに関する考慮事項」を参照してください)。(See Security Considerations for Reflection.)

この機能を使用するには、アプリケーションで .NET Framework 3.5.NET Framework 3.5 以降を対象とする必要があります。To use this functionality, your application should target the .NET Framework 3.5.NET Framework 3.5 or later.

セキュリティ

ReflectionPermission
などの機構をInvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[])使用して遅延バインディングが呼び出された場合。when invoked late-bound through mechanisms such as InvokeMember(String, BindingFlags, Binder, Object, Object[], ParameterModifier[], CultureInfo, String[]). MemberAccess (関連する列挙体)Associated enumeration: MemberAccess.

SecurityPermission
初期化専用フィールドを更新します。for updating init-only fields. SerializationFormatter (関連する列挙体)Associated enumeration: SerializationFormatter.

適用対象