Найти контроллер DiplayName и показать его - PullRequest
0 голосов
/ 09 апреля 2019

Я пишу этот код для поиска списка контроллеров в моем проекте.

    public IEnumerable<Type> GetControllerDescovery(Assembly assemblies)
    {
        var controllers = assemblies.GetExportedTypes()
                                                    .Where(t => typeof(ControllerBase)
                                                    .IsAssignableFrom(t))
                                                    .Select(t => t).
                                                    ToList();
        return controllers;
    }

и он показывает мне этот вывод:

"IranNews.Controllers.V1.CategoryController, IranNews, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
"IranNews.Controllers.V1.RoleManagerController, IranNews, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
"IranNews.Controllers.V1.UserController, IranNews, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null",
"IranNews.Controllers.V1.ValuesController, IranNews, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null"

но мне нужно получить имя контроллера из [Display(Name = "UserManager")]

и покажи мне это: UserManager

как я могу это сделать ?????

1 Ответ

0 голосов
/ 09 апреля 2019

Попробуйте это:

typeof(ControllerBase)
.GetProperties()
.Select(x => x.GetCustomAttribute<DisplayAttribute>())
.Where(x => x != null)
.Select(x => x.Name)
.ToList();

Обновление: Вот рабочий пример:

Assembly.GetExecutingAssembly().GetExportedTypes()
        .Where(t => typeof(ControllerBase).IsAssignableFrom(t))
        .Select(t => t.GetCustomAttribute<DisplayAttribute>())
        .Where(x => x != null)
        .Select(x => x.Name)
        .ToList();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...