¿Cómo obtener el valor del atributo displayname desde el controlador?
Tengo un atributo DisplayName en la parte superior del controlador. Mi principal necesidad es establecer un apodo para los controladores de manera que, cuando obtenga todos los controladores, pueda acceder al apodo además del nombre original.
Uno de varios controladores:
[Route(“api/[controller]”)]
[ApiController]
[Authorize(AuthenticationSchemes = JwtBearerDefaults.AuthenticationScheme)]
[DisplayName(“Nombre de prueba”)]
public class RolesController : ControllerBase
{
…
}
Mi método:
public IList
{
var endpoints = endpointSources
.SelectMany(es => es.Endpoints)
.OfType
var output = endpoints.Select(
e =>
{
var controller = e.Metadata
.OfType
.FirstOrDefault();
return new
{
Controller = controller.ControllerName,
ControllerDisplayName = controller.MethodInfo.GetCustomAttribute<DisplayNameAttribute>()?.DisplayName,
};
}
Pero devuelve un valor nulo (ControllerDisplayName). ¿Qué necesita cambiar?
davy.ai
Necesitas agregar el
DisplayNameAttribute
a la clase del controlador, así:Luego puedes acceder al apodo junto al nombre original en tu método: