Animatroller.MonoExpander.MonoExpanderClient.InternalInvokeMessage C# (CSharp) Method

InternalInvokeMessage() private method

private InternalInvokeMessage ( Type messageType, object messageObject ) : void
messageType System.Type
messageObject object
return void
        private void InternalInvokeMessage(Type messageType, object messageObject)
        {
            System.Reflection.MethodInfo methodInfo;
            lock (this)
            {
                if (!this.handleMethodCache.TryGetValue(messageType, out methodInfo))
                {
                    var handleMethods = typeof(MonoExpanderClient).GetMethods()
                        .Where(x => x.Name == "Handle" && x.GetParameters().Any(p => p.ParameterType == messageType))
                        .ToList();

                    methodInfo = handleMethods.SingleOrDefault();

                    this.handleMethodCache.Add(messageType, methodInfo);
                }
            }

            methodInfo?.Invoke(this, new object[] { messageObject });
        }