コード例 #1
0
        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);
            }
        }