private static RouteValueDictionary GetConstraints(RouteConfigurationElement route)
{
try
{
var dictionary = GetDictionaryFromAttributes(route.Constraints.Attributes);
for (var i = 0; i < route.Constraints.Count; i++)
{
var constraint = route.Constraints[i];
var routeConstraintType = Type.GetType(constraint.Type);
IRouteConstraint routeConstraint;
if (constraint.Params.Attributes.Count > 0)
{
var parameters = constraint.Params.Attributes.Values.ToArray();
routeConstraint = (IRouteConstraint)Activator.CreateInstance(routeConstraintType, parameters);
}
else
routeConstraint = (IRouteConstraint)Activator.CreateInstance(routeConstraintType);
dictionary.Add(constraint.Name, routeConstraint);
}
return dictionary;
}
catch (Exception ex)
{
var message = String.Format("Can't create an instance of IRouteHandler {0}", route.RouteHandlerType);
throw new ApplicationException(message, ex);
}
}