public static void Main()
var exampleInstance = new Example();
var exampleType = typeof(Example);
var fooProperty = exampleType.GetProperty("Foo", BindingFlags.Public | BindingFlags.Instance);
fooProperty.SetValue(exampleInstance, 24);
Console.WriteLine(exampleInstance.Foo);
exampleType.InvokeMember(fooProperty.Name, BindingFlags.Public | BindingFlags.NonPublic | BindingFlags.SetProperty | BindingFlags.Instance, null, exampleInstance, new object[] { 23 });
Console.WriteLine(exampleInstance.Foo);
public int Foo { get; private set; }