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 });
}