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