internal static void EnsureInitialized(this IHttpRoute route, Func <IReadOnlyCollection <IHttpRoute> > initializer)
        {
            Debug.Assert(route.GetType().Name == "RouteCollectionRoute", "Extension method only intended to support testing RouteCollectionRoute.EnsureInitialized");

            var type   = route.GetType();
            var method = type.GetRuntimeMethod(nameof(EnsureInitialized), new[] { initializer.GetType() });

            method.Invoke(route, new object[] { initializer });
        }
        public static IEnumerable <IHttpRoute> GetSubRoutes(this HttpConfiguration configuration)
        {
            IHttpRoute   route             = configuration.Routes["MS_attributerouteWebApi"];
            PropertyInfo subRoutesProperty = route.GetType().GetProperty("SubRoutes");

            return((IEnumerable <IHttpRoute>)subRoutesProperty.GetValue(route));
        }
示例#3
0
        static void Main(string[] args)
        {
            HttpConfiguration configuration = new HttpConfiguration();

            configuration.MapHttpAttributeRoutes();
            configuration.EnsureInitialized();

            IHttpRoute               route             = configuration.Routes["MS_attributerouteWebApi"];
            PropertyInfo             subRoutesProperty = route.GetType().GetProperty("SubRoutes");
            IEnumerable <IHttpRoute> subRoutes         = (IEnumerable <IHttpRoute>)subRoutesProperty.GetValue(route);
            IHttpRoute               subRoute          = subRoutes.First();

            Console.WriteLine("Defaults:");
            foreach (var item in subRoute.Defaults)
            {
                Console.WriteLine("{0,-12}{1}", item.Key, item.Value);
            }

            Console.WriteLine("\nDataTokens:");
            foreach (var item in subRoute.DataTokens)
            {
                Console.WriteLine("{0,-12}{1}", item.Key, item.Value);
            }

            Console.WriteLine("\nConstraints:");
            foreach (var item in subRoute.Constraints)
            {
                Console.WriteLine("{0,-12}{1}", item.Key, item.Value.GetType().Name);
            }
        }