Object - SetFieldValue

A T extension method that sets field value.

Try it

public static void Main()
{
	var obj = new TestClass();

	//C# Extension Method: Object - SetFieldValue	
    obj.SetFieldValue("PublicField", 5);
    obj.SetFieldValue("InternaStaticlField", 30);
	
	Console.WriteLine(obj.PublicField);
	Console.WriteLine(TestClass.InternaStaticlField);
}

public class TestClass
{
    internal static int InternaStaticlField = 2;
    public int PublicField = 1;
}

View Source
using System;
using System.Reflection;

public static partial class Extensions
{
    /// <summary>
    ///     A T extension method that sets field value.
    /// </summary>
    /// <typeparam name="T">Generic type parameter.</typeparam>
    /// <param name="this">The @this to act on.</param>
    /// <param name="fieldName">Name of the field.</param>
    /// <param name="value">The value.</param>
    public static void SetFieldValue<T>(this T @this, string fieldName, object value)
    {
        Type type = @this.GetType();
        FieldInfo field = type.GetField(fieldName, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.Instance | BindingFlags.Static);
        field.SetValue(@this, value);
    }
}