2015-06-11 47 views
0

我有一個自定義屬性,我在我的操作方法中使用它。我需要在委託處理程序中訪問此屬性信息。委託處理程序中的訪問控制器操作方法屬性

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(); 
相關問題