public IRouterBuilder Register(Type type, string routeName, bool defaultType = true)
        {
            var routeSpecification = new RouteSpecification(routeName);
            var routeDestination   = new RouteDestination(type, null);

            return(Register(routeSpecification, routeDestination, defaultType));
        }
        public IRouterBuilder Register(RouteSpecification route, RouteDestination destination, bool defaultType = true)
        {
            if (route.Context == null)
            {
                if (!_TypeToRoute.ContainsKey(destination.Type))
                {
                    _TypeToRoute.Add(destination.Type, route.Name);
                }
            }

            var routeToType = GetRoutes(route);

            if (!defaultType && routeToType.ContainsKey(route.Name))
            {
                return(this);
            }

            routeToType[route.Name] = destination;
            return(this);
        }