using System.Linq.Expressions;
public void HandleEventWithArg(int arg)
Console.WriteLine("Method called! {0}", arg);
public static MethodCallExpression GetCallMethodExpression(object obj)
var methodInfo = obj.GetType().GetMethod("HandleEventWithArg");
var argExpression = Expression.Constant(5);
return Expression.Call(Expression.Constant(obj), methodInfo, argExpression);
public static void Main()
var expr = GetCallMethodExpression(new A());
Expression.Lambda(expr).Compile().DynamicInvoke();