public static ReflectionHelper.InvokeHandler GetHandler(MethodInfo baseMethod, params Type[] entityTypes)
        {
            var key = new HandlerCacheKey(baseMethod, entityTypes);

            if (!Handlers.TryGetValue(key, out var handler))
            {
                var methodDefinition = baseMethod;
                if (entityTypes != null && entityTypes.Length > 0)
                {
                    methodDefinition = methodDefinition.MakeGenericMethod(entityTypes);
                }

                handler = ReflectionHelper.CreateInvoker(methodDefinition);
                Handlers.TryAdd(key, handler);
            }

            return(handler);
        }
 protected bool Equals(HandlerCacheKey other)
 {
     return(Equals(BaseMethod, other.BaseMethod) && Equals(GenericTypes, other.GenericTypes));
 }