Bus.Dispatch.MessageDispatcher.GenerateHandleAction C# (CSharp) Метод

GenerateHandleAction() приватный Метод

private GenerateHandleAction ( Type interfaceType ) : IMessage>.Action
interfaceType System.Type
Результат IMessage>.Action
        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();
        }