Ejemplo n.º 1
0
        public IDictionary <string, RequestActionRoute> GetActionAttributeRoutes(ChromelyController controller)
        {
            if (controller == null)
            {
                return(null);
            }

            var result = new Dictionary <string, RequestActionRoute>();

            var methodInfos = controller.GetType().GetMethods()
                              .Where(m => m.GetCustomAttributes(typeof(RequestActionAttribute), false).Length > 0)
                              .ToArray();

            foreach (var item in methodInfos)
            {
                var actionAttributeDelegate      = CreateDelegate(controller, item) as Func <IChromelyRequest, IChromelyResponse>;
                var asyncActionAttributeDelegate = CreateDelegate(controller, item) as Func <IChromelyRequest, Task <IChromelyResponse> >;
                var attribute = item.GetCustomAttribute <RequestActionAttribute>();

                var key = RouteKey.CreateRequestKey(attribute.RouteKey);

                // Sync
                if (actionAttributeDelegate != null && attribute != null)
                {
                    result[key] = new RequestActionRoute(attribute.RouteKey, actionAttributeDelegate, attribute.Description);
                }

                // Async
                if (asyncActionAttributeDelegate != null && attribute != null)
                {
                    result[key] = new RequestActionRoute(attribute.RouteKey, asyncActionAttributeDelegate, attribute.Description);
                }
            }

            return(result);
        }
Ejemplo n.º 2
0
        private void AddRoute(string path, RequestActionRoute route)
        {
            var actionKey = RouteKey.CreateRequestKey(path);

            ActionRouteDictionary[actionKey] = route;
        }