// We need a getter delegate so the localized name is only fetched when there is already a work context, so the current culture
        // can be determined.
        public virtual void DescribeEngine(string name, DisplayNameGetter displayNameGetter, RouteDescriptor route)
        {
            if (String.IsNullOrEmpty(name) || displayNameGetter == null)
            {
                throw new ArgumentException("Associativy frontend engines should have their Name and DisplayName set properly.");
            }

            if (route == null)
            {
                throw new ArgumentException("Associativy frontend engines should have their route set properly");
            }

            _descriptors.Add(new EngineDescriptor(name, displayNameGetter, route));
        }
        public void GetRoutes(ICollection <RouteDescriptor> routes)
        {
            var routeDescriptor = new RouteDescriptor {
                Priority = -20,
                Route    = new Route(
                    "{controller}/{action}/{id}",
                    new RouteValueDictionary {
                    { "controller", "home" },
                    { "action", "index" },
                    { "id", "" },
                },
                    new RouteValueDictionary {
                    { "controller", new HomeOrAccount() }
                },
                    new MvcRouteHandler())
            };

            routes.Add(routeDescriptor);
        }
 public EngineDescriptor(string engineName, DisplayNameGetter displayNameGetter, RouteDescriptor route)
 {
     EngineName = engineName;
     _displayNameGetter = displayNameGetter;
     Route = route;
 }