private async Task HandleWhenRequest(object request, IList <IActionBag> actionBags) { var requestHandlerType = _successor .GetType().GetInterfaces() .FirstOrDefault(x => x.IsGenericType && x.GetGenericTypeDefinition() == typeof(IAction <>)); if (requestHandlerType != null) { var connection = BagConverter.Get <ConnectionBag>(actionBags).Connection; var castRequest = CastGenericRequest(request, requestHandlerType); dynamic requestAction = _successor; await requestAction.ProcessRequest(castRequest, connection, actionBags); } }