Export (0) Print
Expand All

FieldInfo.SetValue Method (Object, Object)

Sets the value of the field supported by the given object.

Namespace: System.Reflection
Assembly: mscorlib (in mscorlib.dll)

public void SetValue (
	Object obj,
	Object value
)
public final void SetValue (
	Object obj, 
	Object value
)
public final function SetValue (
	obj : Object, 
	value : Object
)

Parameters

obj

The object whose field value will be set.

value

The value to assign to the field.

Exception typeCondition

FieldAccessException

The caller does not have permission to access this field.

TargetException

The obj parameter is a null reference (Nothing in Visual Basic) and the field is an instance field.

ArgumentException

The field does not exist on the object.

-or-

The value parameter cannot be converted and stored in the field.

This method will assign value to the field reflected by this instance on object obj. If the field is static, obj will be ignored. For non-static fields, obj should be an instance of a class that inherits or declares the field. The new value is passed as an Object. For example, if the field's type is Boolean, an instance of Object with the appropriate Boolean value is passed. Before setting the value, SetValue checks to see if the user has access permission. This final method is a convenience method for calling the following SetValue method.

NoteNote

Fully trusted code has the permissions that are needed to access and invoke private constructors, methods, fields, and properties using reflection.

The following example sets the value of a field, gets and displays the value, modifies the field, and displays the result.

using System;
using System.Reflection;
using System.Globalization;

public class Example
{
    private string myString;
    public Example()
    {
        myString = "Old value";
    }
    string GetField
    {
        get
        {
            return myString;
        }
    }
}

public class FieldInfo_SetValue
{
    public static void Main()
    {
        try
        {
            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));

            // Set the field value to its old value. 
            myFieldInfo.SetValue( myObject , "Old value" ); 
            myFieldInfo = myType.GetField("myString", 
               BindingFlags.NonPublic | BindingFlags.Instance); 
            // Display the string before applying SetValue to the field.
            Console.Write( "\nThe field value of mystring is {0}.\n", 
               myFieldInfo.GetValue(myObject)); 
            // Display the SetValue signature used to set the value of a field.
            Console.WriteLine("Applying SetValue(Object, Object, BindingFlags, Binder, CultureInfo)."); 

            // Change the field value using the SetValue method. 
            myFieldInfo.SetValue(myObject, "New value", BindingFlags.Public, 
               null, null); 	
            // Display the string after applying SetValue to the field.
            Console.WriteLine( "The field value of mystring is {0}.", 
               myFieldInfo.GetValue(myObject));
        }
        catch( Exception e )
        {
            // Any exception generated is displayed. 
            Console.WriteLine( "Exception: {0}", e.Message );
        }
    }
}

import System.*;
import System.Reflection.*;
import System.Globalization.*;

public class MyClass
{
    private String myString;

    public MyClass()
    {
        myString = "Old value";
    } //MyClass

    /** @property 
     */
    String get_GetField()
    {
        return myString;
    } //get_GetField
} //MyClass

public class FieldInfoSetValue
{
    public static void main(String[] args)
    {
        try {
            MyClass myObject = new MyClass();
            Type myType = Type.GetType("MyClass");
            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));

            // Set the field value to its old value. 
            myFieldInfo.SetValue(myObject, "Old value");
            myFieldInfo = myType.GetField("myString", BindingFlags.NonPublic 
                | BindingFlags.Instance);

            // Display the string before applying SetValue to the field.
            Console.Write("\nThe field value of mystring is {0}.\n",
                myFieldInfo.GetValue(myObject));

            // Display the SetValue signature used to set the value of a field.
            Console.WriteLine("Applying SetValue(Object, Object," 
                + " BindingFlags, Binder, CultureInfo).");

            // Change the field value using the SetValue method. 
            myFieldInfo.SetValue(myObject, "New value", BindingFlags.Public,
                null, null);

            // Display the string after applying SetValue to the field.
            Console.WriteLine("The field value of mystring is {0}.",
                myFieldInfo.GetValue(myObject));
        }
        catch (System.Exception e) {
            // Any exception generated is displayed. 
            Console.WriteLine("Exception: {0}", e.get_Message());
        }
    } //main
} //FieldInfoSetValue

Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile for Pocket PC, Windows Mobile for Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see System Requirements.

.NET Framework

Supported in: 2.0, 1.1, 1.0

.NET Compact Framework

Supported in: 2.0, 1.0

Community Additions

ADD
Show:
© 2014 Microsoft