Reflection Performance – Create Delegate (Properties C#)
This should work for you: static Action<object, object> BuildSetAccessor(MethodInfo method) { var obj = Expression.Parameter(typeof(object), “o”); var value = Expression.Parameter(typeof(object)); Expression<Action<object, object>> expr = Expression.Lambda<Action<object, object>>( Expression.Call( Expression.Convert(obj, method.DeclaringType), method, Expression.Convert(value, method.GetParameters()[0].ParameterType)), obj, value); return expr.Compile(); } Usage: var accessor = BuildSetAccessor(typeof(TestClass).GetProperty(“MyProperty”).GetSetMethod()); var instance = new TestClass(); accessor(instance, “foo”); Console.WriteLine(instance.MyProperty); With TestClass: public class TestClass … Read more