Skip to content

Instantly share code, notes, and snippets.

@trailmax
Created May 9, 2013 15:01
Show Gist options
  • Save trailmax/5548014 to your computer and use it in GitHub Desktop.
Save trailmax/5548014 to your computer and use it in GitHub Desktop.
List of actions in a controller. Ignoring actions that come from base controller.
public virtual ActionResult SiteMap()
{
var assembly = Assembly.GetExecutingAssembly();
var controllers = assembly.GetTypes().Where(x => x != typeof(BaseController) && typeof(BaseController).IsAssignableFrom(x)).ToList();
controllers = controllers.Where(c => !c.Name.StartsWith("T4MVC")).ToList();
var controller = controllers.FirstOrDefault(c => c.FullName.Contains("HomePage"));
var actions = GetActionResults(controller);
var baseClassActions = GetActionResults(controller.BaseType);
actions = actions.Where(a => !baseClassActions.Select(b => b.Name).Contains(a.Name)).Select(a => a).ToList();
foreach (var action in actions)
{
Console.WriteLine(String.Format("Method Name: {0}", action.Name));
}
throw new NotImplementedException();
}
private List<MethodInfo> GetActionResults(Type controller)
{
return controller.GetMethods(BindingFlags.Public | BindingFlags.DeclaredOnly | BindingFlags.Instance)
.Where(m => m.ReturnType == typeof(ActionResult) || m.ReturnType.IsAssignableFrom(typeof(ActionResult)))
.ToList();
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment