2015-06-11 1 views
0

У меня есть настраиваемый атрибут, и я использую его в своих методах действий. Мне нужно получить доступ к этой информации об атрибутах в обработчике делегирования.Атрибуты методов действия Access Controller в обработчике делегирования

Controller A 
{ 
    [MyAttribute] 
    public IHttpActionResult MyMethod 
} 

public class MyHandler : DelegatingHandler 
{ 
    protected override async Task<HttpResponseMessage> SendAsync(
      HttpRequestMessage request, CancellationToken cancellationToken) 
    { 
    var controllerSelector = GlobalConfiguration.Configuration.Services.GetHttpControllerSelector(); 
    var controllerDescriptor = controllerSelector.SelectController(request); 
    //Here I want to access controllerA action method MyMethod metadata 
    //so I can check if actionmethod has custom attribute or not and do my process 
    } 
} 

Здесь я хочу получить доступ к controllerA методу действия MyMethod метаданных, так что я могу проверить, если actionmethod имеет пользовательский атрибут или нет, и сделать мой процесс. Пожалуйста, посоветуйте мне об этом.

+0

Вам нужно будет использовать отражение. [См. Здесь] (https://msdn.microsoft.com/en-us/library/z919e8tw.aspx) – Padraic

ответ

0

Я использую немного другой подход,

Я использую GlobalConfiguration.Configuration.Services.GetApiExplorer(). ApiDescriptions и сравнить его с request.RequestUri

var api = GlobalConfiguration.Configuration.Services.GetApiExplorer().ApiDescriptions.FirstOrDefault(p => string.Compare(p.RelativePath , request.RequestUri.LocalPath.Substring(1), StringComparison.OrdinalIgnoreCase) == 0); 

       var MyAttributeInfo = api.ActionDescriptor.GetCustomAttributes<MyAttribute>().FirstOrDefault(); 
Смежные вопросы