private Action<object, IMessage> GenerateHandleAction(Type interfaceType)
{
var methodInfo = interfaceType.GetMethod("Handle");
var messageType = interfaceType.GetGenericArguments()[0];
var instance = Expression.Parameter(typeof(object), "instance");
var message = Expression.Parameter(typeof(IMessage), "message");
var body = Expression.Call(Expression.Convert(instance, interfaceType), methodInfo, Expression.Convert(message, messageType));
var lambda = Expression.Lambda(typeof(Action<object, IMessage>), body, instance, message);
return (Action<object, IMessage>)lambda.Compile();
}