Отображаемое имя аннотации для метода действия mvc - PullRequest
0 голосов
/ 04 июля 2018

Я хочу создать понятные имена для всех методов действий.

[LogActionFilter]
    public class ServiceController : ApiController
    {
    [DisplayName("User log in")]
            public object Login()        
            {
                //my logic for login and returns object 
            }
    }

В атрибуте фильтра действий я хочу получить отображаемое имя этого действия.

public class LogActionFilter : ActionFilterAttribute
    {
        public override void OnActionExecuting(HttpActionContext actionContext)
        {
            var actionName = actionContext.Request.RequestUri.AbsolutePath.Split('/').Last();
            //var actionFriendlyName = getDisplayName(actionName); How to get display name?
        }
    }

Как я могу получить значение атрибута DisplayName?

1 Ответ

0 голосов
/ 04 июля 2018

Я использовал эту функцию, чтобы получить атрибут для метода:

public static T GetAttributeFrom<T>(object instance, string    propertyName) where T : Attribute
           {
               var attrType = typeof(T);
               var property = instance.GetType().GetMethod(propertyName);
               return (T)property.GetCustomAttributes(attrType, false).First();
           }

использование:

var actionName = actionContext.Request.RequestUri.AbsolutePath.Split('/').Last();
var displayNameAttribute = GetAttributeFrom<DisplayNameAttribute>(new ServiceController(), actionName);
var methodFriendlyName = displayNameAttribute.DisplayName;
...