我在我的项目中编写此代码以查找控制器列表。
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
我该怎么做?????
答案 0 :(得分:0)
尝试一下:
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();