using System.Linq.Expressions;
static event EventHandler E;
static void Handle(Expression<Func<Delegate>> eventExpression, EventHandler handler)
var memberExpression = eventExpression.Body as MemberExpression;
var eventField = memberExpression.Member as FieldInfo;
var eventHandlerList = eventField.GetValue(null) as Delegate;
eventField.SetValue(null, Delegate.Combine(eventHandlerList, handler));
static void Main(string[] args)
var other = new OtherClass();
Handle(() => other.E, (s, e) => Console.WriteLine("Event received"));
E(null, EventArgs.Empty);
public event EventHandler E;