ASP.NET MVC программно получает список контроллеров

Я только использую статические классы для вспомогательных методов, но с появлением C# 3.0, я использовал бы дополнительные методы для тех.

я редко использую статические методы классов по тем же причинам, почему я редко использую одиночный элемент "шаблон разработки".

31
задан Cœur 10 April 2017 в 16:36
поделиться

3 ответа

Вы можете проанализировать свою сборку и найти все классы, которые наследуются от типа System.Web.MVC.Controller. Вот пример кода, который показывает, как это можно сделать:

http://mvcsitemap.codeplex.com/WorkItem/View.aspx?WorkItemId=1567

12
ответ дан 27 November 2019 в 22:19
поделиться

Используя предложение Джона по отражению через сборку , вот фрагмент, который может оказаться полезным:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
using System.Web.Mvc;

public class MvcHelper
{
    private static List<Type> GetSubClasses<T>()
    {
        return Assembly.GetCallingAssembly().GetTypes().Where(
            type => type.IsSubclassOf(typeof(T))).ToList();
    }

    public List<string> GetControllerNames()
    {
        List<string> controllerNames = new List<string>();
        GetSubClasses<Controller>().ForEach(
            type => controllerNames.Add(type.Name));
        return controllerNames;
    }
}
43
ответ дан 27 November 2019 в 22:19
поделиться

Создайте свойство в каждом контроллере и получите такое имя.

-1
ответ дан 27 November 2019 в 22:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: